Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d96b7af authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change Ib548dbb2 into eclair

* changes:
  improve video performance to minimize the tearing effect seen in 720p movies
parents 4f22b67c 69ff5de1
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -120,9 +120,7 @@ uint32_t LayerBuffer::doTransaction(uint32_t flags)
        source->onTransaction(flags);
    uint32_t res = LayerBase::doTransaction(flags);
    // we always want filtering for these surfaces
    if (!(mFlags & DisplayHardware::SLOW_CONFIG)) {
        mUseLinearFiltering = true;
    }
    mUseLinearFiltering = !(mFlags & DisplayHardware::SLOW_CONFIG);
    return res;
}

@@ -371,25 +369,33 @@ LayerBuffer::BufferSource::BufferSource(LayerBuffer& layer,
        // note that the size of this buffer doesn't really matter,
        // the final image will always be drawn with proper aspect ratio.

        int w = buffers.w;
        int h = buffers.h;
        int w = layer.mTransformedBounds.width();
        int h = layer.mTransformedBounds.height();
        if (buffers.w * h != buffers.h * w) {
            int t = w; w = h; h = t;
        }
        if (buffers.w * h == buffers.h * w) {
            // same pixel area, don't use filtering
            layer.mUseLinearFiltering = false;
        }

        mTempGraphicBuffer.clear();
        mTempGraphicBuffer = new GraphicBuffer(
                w, h, HAL_PIXEL_FORMAT_RGBX_8888,
                w, h, HAL_PIXEL_FORMAT_RGB_565,
                GraphicBuffer::USAGE_HW_TEXTURE |
                GraphicBuffer::USAGE_HW_2D);

        if (mTempGraphicBuffer->initCheck() == NO_ERROR) {
            NativeBuffer& dst(mTempBuffer);
            dst.img.w = mTempGraphicBuffer->getStride();
            dst.img.h = mTempGraphicBuffer->getHeight();
            dst.img.h = h;
            dst.img.format = mTempGraphicBuffer->getPixelFormat();
            dst.img.handle = (native_handle_t *)mTempGraphicBuffer->handle;
            dst.img.base = 0;
            dst.crop.l = 0;
            dst.crop.t = 0;
            dst.crop.r = mTempGraphicBuffer->getWidth();
            dst.crop.b = mTempGraphicBuffer->getHeight();
            dst.crop.r = w;
            dst.crop.b = h;
        } else {
            mTempGraphicBuffer.clear();
        }