LCOV - code coverage report
Current view: top level - gfx/layers/wr - WebRenderCanvasLayer.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 40 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 6 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
       2             :  * This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #include "WebRenderCanvasLayer.h"
       7             : 
       8             : #include "AsyncCanvasRenderer.h"
       9             : #include "gfxPrefs.h"
      10             : #include "gfxUtils.h"
      11             : #include "GLContext.h"
      12             : #include "GLScreenBuffer.h"
      13             : #include "LayersLogging.h"
      14             : #include "mozilla/gfx/2D.h"
      15             : #include "mozilla/layers/ScrollingLayersHelper.h"
      16             : #include "mozilla/layers/StackingContextHelper.h"
      17             : #include "mozilla/layers/TextureClientSharedSurface.h"
      18             : #include "mozilla/layers/WebRenderBridgeChild.h"
      19             : #include "PersistentBufferProvider.h"
      20             : #include "SharedSurface.h"
      21             : #include "SharedSurfaceGL.h"
      22             : #include "mozilla/webrender/WebRenderTypes.h"
      23             : 
      24             : namespace mozilla {
      25             : namespace layers {
      26             : 
      27           0 : WebRenderCanvasLayer::~WebRenderCanvasLayer()
      28             : {
      29           0 :   MOZ_COUNT_DTOR(WebRenderCanvasLayer);
      30             : 
      31           0 :   if (mExternalImageId.isSome()) {
      32           0 :     WrBridge()->DeallocExternalImageId(mExternalImageId.ref());
      33             :   }
      34           0 : }
      35             : 
      36             : void
      37           0 : WebRenderCanvasLayer::Initialize(const Data& aData)
      38             : {
      39           0 :   ShareableCanvasLayer::Initialize(aData);
      40             : 
      41             :   // XXX: Use basic surface factory until we support shared surface.
      42           0 :   if (!mGLContext || mGLFrontbuffer)
      43           0 :     return;
      44             : 
      45           0 :   gl::GLScreenBuffer* screen = mGLContext->Screen();
      46           0 :   auto factory = MakeUnique<gl::SurfaceFactory_Basic>(mGLContext, screen->mCaps, mFlags);
      47           0 :   screen->Morph(Move(factory));
      48             : }
      49             : 
      50             : void
      51           0 : WebRenderCanvasLayer::RenderLayer(wr::DisplayListBuilder& aBuilder,
      52             :                                   const StackingContextHelper& aSc)
      53             : {
      54           0 :   UpdateCompositableClient();
      55             : 
      56           0 :   if (mExternalImageId.isNothing()) {
      57           0 :     mExternalImageId = Some(WrBridge()->AllocExternalImageIdForCompositable(mCanvasClient));
      58             :   }
      59             : 
      60           0 :   Maybe<gfx::Matrix4x4> transform;
      61           0 :   const bool needsYFlip = (mOriginPos == gl::OriginPos::BottomLeft);
      62           0 :   if (needsYFlip) {
      63           0 :     transform = Some(GetTransform().PreTranslate(0, mBounds.height, 0).PreScale(1, -1, 1));
      64             :   }
      65             : 
      66           0 :   ScrollingLayersHelper scroller(this, aBuilder, aSc);
      67           0 :   StackingContextHelper sc(aSc, aBuilder, this, transform);
      68             : 
      69           0 :   LayerRect rect(0, 0, mBounds.width, mBounds.height);
      70           0 :   DumpLayerInfo("CanvasLayer", rect);
      71             : 
      72           0 :   wr::ImageRendering filter = wr::ToImageRendering(mSamplingFilter);
      73             : 
      74           0 :   if (gfxPrefs::LayersDump()) {
      75           0 :     printf_stderr("CanvasLayer %p texture-filter=%s\n",
      76           0 :                   this->GetLayer(),
      77           0 :                   Stringify(filter).c_str());
      78             :   }
      79             : 
      80           0 :   WrImageKey key = GetImageKey();
      81           0 :   WrBridge()->AddWebRenderParentCommand(OpAddExternalImage(mExternalImageId.value(), key));
      82           0 :   WrManager()->AddImageKeyForDiscard(key);
      83             : 
      84           0 :   WrRect r = sc.ToRelativeWrRect(rect);
      85           0 :   aBuilder.PushImage(r, r, filter, key);
      86           0 : }
      87             : 
      88             : void
      89           0 : WebRenderCanvasLayer::AttachCompositable()
      90             : {
      91           0 :   mCanvasClient->Connect();
      92           0 : }
      93             : 
      94             : CompositableForwarder*
      95           0 : WebRenderCanvasLayer::GetForwarder()
      96             : {
      97           0 :   return WrManager()->WrBridge();
      98             : }
      99             : 
     100             : } // namespace layers
     101             : } // namespace mozilla

Generated by: LCOV version 1.13