зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1733977 - Remove unused gfx/layers/client/ContentClient.h. r=gfx-reviewers,nical
Differential Revision: https://phabricator.services.mozilla.com/D127516
This commit is contained in:
Родитель
64193785d4
Коммит
889748a9e9
|
@ -11702,7 +11702,6 @@ _ZN11encoding_rs3mem20convert_str_to_utf1617h5ca12bd5f45f4892E
|
|||
?AsCSSTransition@CSSTransition@dom@mozilla@@UBEPBV123@XZ
|
||||
?SetClipRect@Layer@layers@mozilla@@QAEXABV?$Maybe@U?$IntRectTyped@UParentLayerPixel@mozilla@@@gfx@mozilla@@@3@@Z
|
||||
?SetAncestorMaskLayers@Layer@layers@mozilla@@QAEXABV?$nsTArray@V?$RefPtr@VLayer@layers@mozilla@@@@@@@Z
|
||||
?ReturnDrawTarget@ContentClient@layers@mozilla@@QAEXAAPAVDrawTarget@gfx@3@@Z
|
||||
?UsesTiling@gfxPlatform@@UBE_NXZ
|
||||
?CreatedPaintedLayer@ShadowLayerForwarder@layers@mozilla@@QAEXPAVShadowableLayer@23@@Z
|
||||
?AsLayer@ClientPaintedLayer@layers@mozilla@@UAEPAVLayer@23@XZ
|
||||
|
@ -11768,13 +11767,10 @@ _ZN11encoding_rs3mem20convert_str_to_utf1617h5ca12bd5f45f4892E
|
|||
?AddRef@ShadowLayerForwarder@layers@mozilla@@UAGKXZ
|
||||
?SetLayersObserverEpoch@ShadowLayerForwarder@layers@mozilla@@QAEXULayersObserverEpoch@23@@Z
|
||||
?InitIPDL@CompositableClient@layers@mozilla@@QAEXABVCompositableHandle@23@@Z
|
||||
?GetTextureInfo@ContentClientDoubleBuffered@layers@mozilla@@UBE?AUTextureInfo@23@XZ
|
||||
?SendNewCompositable@PLayerTransactionChild@layers@mozilla@@QAE_NABVCompositableHandle@23@ABUTextureInfo@23@@Z
|
||||
??0HangEntry@mozilla@@QAE@$$QAVHangEntrySuppressed@1@@Z
|
||||
?SendNewCompositable@PImageBridgeChild@layers@mozilla@@QAE_NABVCompositableHandle@23@ABUTextureInfo@23@ABW4LayersBackend@23@@Z
|
||||
?Attach@ShadowLayerForwarder@layers@mozilla@@QAEXPAVCompositableClient@23@PAVShadowableLayer@23@@Z
|
||||
?DrawTo@ContentClientBasic@layers@mozilla@@QAEXPAVPaintedLayer@23@PAVDrawTarget@gfx@3@MW4CompositionOp@63@PAVSourceSurface@63@PBV?$BaseMatrix@M@63@@Z
|
||||
?BeginPaint@ContentClient@layers@mozilla@@UAE?AUPaintState@123@PAVPaintedLayer@23@I@Z
|
||||
?CanUseOpaqueSurface@Layer@layers@mozilla@@QAE_NXZ
|
||||
?EnsureValidRegionIsCurrent@PaintedLayer@layers@mozilla@@ABEXXZ
|
||||
??4nsRegion@@QAEAAV0@$$QAV0@@Z
|
||||
|
@ -11844,7 +11840,6 @@ ARGBSetRow_X86
|
|||
?Read@?$IPDLParamTraits@VSurfaceDescriptor@layers@mozilla@@@ipc@mozilla@@SA_NPBVMessage@IPC@@PAVPickleIterator@@PAVIProtocol@23@PAVSurfaceDescriptor@layers@3@@Z
|
||||
?GetLocalVisibleRegion@Layer@layers@mozilla@@QAEABV?$IntRegionTyped@ULayerPixel@mozilla@@@gfx@3@XZ
|
||||
?AndWith@nsRegion@@QAEAAV1@ABV1@@Z
|
||||
?BorrowDrawTargetForPainting@ContentClient@layers@mozilla@@UAEPAVDrawTarget@gfx@3@AAUPaintState@123@PAUDrawIterator@RotatedBuffer@23@@Z
|
||||
?BorrowDrawTargetForQuadrantUpdate@RotatedBuffer@layers@mozilla@@QAEPAVDrawTarget@gfx@3@ABU?$IntRectTyped@UUnknownUnits@gfx@mozilla@@@53@PAUDrawIterator@123@@Z
|
||||
?SetTransform@DrawTargetSkia@gfx@mozilla@@UAEXABV?$BaseMatrix@M@23@@Z
|
||||
?GetBackendType@DrawTargetSkia@gfx@mozilla@@UBE?AW4BackendType@23@XZ
|
||||
|
@ -12036,7 +12031,6 @@ ARGBSetRow_X86
|
|||
?ComputeEffectiveTransformsForChildren@ContainerLayer@layers@mozilla@@IAEXABV?$Matrix4x4Typed@UUnknownUnits@gfx@mozilla@@U123@M@gfx@3@@Z
|
||||
??_GReadbackLayer@layers@mozilla@@UAEPAXI@Z
|
||||
?JS_GetFunctionDisplayId@@YAPAVJSString@@PAVJSFunction@@@Z
|
||||
??0ContentClientBasic@layers@mozilla@@QAE@W4BackendType@gfx@2@@Z
|
||||
??1ReadbackProcessor@layers@mozilla@@QAE@XZ
|
||||
?GetClipExtents@gfxContext@@QBE?AU?$RectTyped@UUnknownUnits@gfx@mozilla@@N@gfx@mozilla@@W4ClipExtentsSpace@1@@Z
|
||||
?PopClip@gfxContext@@QAEXXZ
|
||||
|
@ -12050,7 +12044,6 @@ ARGBSetRow_X86
|
|||
?TransposeTransform4D@?$Matrix4x4Typed@UUnknownUnits@gfx@mozilla@@U123@M@gfx@mozilla@@QBE?AU?$Point4DTyped@UUnknownUnits@gfx@mozilla@@M@23@ABU423@@Z
|
||||
?IsBackfaceHidden@Layer@layers@mozilla@@QAE_NXZ
|
||||
?GetEffectiveMixBlendMode@Layer@layers@mozilla@@QAE?AW4CompositionOp@gfx@3@XZ
|
||||
?Clear@ContentClient@layers@mozilla@@UAEXXZ
|
||||
?ComputeVisibility@nsDisplayWrapList@@UAE_NPAVnsDisplayListBuilder@@PAVnsRegion@@@Z
|
||||
?GetOpaqueRegion@nsDisplayWrapList@@UBE?AVnsRegion@@PAVnsDisplayListBuilder@@PA_N@Z
|
||||
??$?DUUnknownUnits@gfx@mozilla@@@?$Matrix4x4TypedFlagged@UUnknownUnits@gfx@mozilla@@U123@@gfx@mozilla@@QBE?AV012@ABV012@@Z
|
||||
|
|
|
@ -11637,7 +11637,6 @@ ZN5style7stylist7Stylist17remove_stylesheet17h3ad60902102208fbE
|
|||
?Add@?$TiledRegion@V?$IntRegionTyped@UUnknownUnits@gfx@mozilla@@@gfx@mozilla@@@gfx@mozilla@@QEAAXAEBV?$IntRegionTyped@UUnknownUnits@gfx@mozilla@@@23@@Z
|
||||
?SetClipRect@Layer@layers@mozilla@@QEAAXAEBV?$Maybe@U?$IntRectTyped@UParentLayerPixel@mozilla@@@gfx@mozilla@@@3@@Z
|
||||
?SetAncestorMaskLayers@Layer@layers@mozilla@@QEAAXAEBV?$nsTArray@V?$RefPtr@VLayer@layers@mozilla@@@@@@@Z
|
||||
?ReturnDrawTarget@ContentClient@layers@mozilla@@QEAAXAEAPEAVDrawTarget@gfx@3@@Z
|
||||
?UsesTiling@gfxPlatform@@UEBA_NXZ
|
||||
?CreatedPaintedLayer@ShadowLayerForwarder@layers@mozilla@@QEAAXPEAVShadowableLayer@23@@Z
|
||||
?AsLayer@ClientPaintedLayer@layers@mozilla@@UEAAPEAVLayer@23@XZ
|
||||
|
@ -11654,7 +11653,6 @@ ZN5style7stylist7Stylist17remove_stylesheet17h3ad60902102208fbE
|
|||
?SetVisibleRegion@Layer@layers@mozilla@@UEAAXAEBV?$IntRegionTyped@ULayerPixel@mozilla@@@gfx@3@@Z
|
||||
?GetCombinedClipRect@Layer@layers@mozilla@@QEBA?AV?$Maybe@U?$IntRectTyped@UParentLayerPixel@mozilla@@@gfx@mozilla@@@3@XZ
|
||||
?GetType@PaintedLayer@layers@mozilla@@UEBA?AW4LayerType@Layer@23@XZ
|
||||
?GetTextureInfo@TiledContentClient@layers@mozilla@@UEBA?AUTextureInfo@23@XZ
|
||||
?InsertAfter@ContainerLayer@layers@mozilla@@UEAA_NPEAVLayer@23@0@Z
|
||||
?InsertAfter@ShadowLayerForwarder@layers@mozilla@@QEAAXPEAVShadowableLayer@23@00@Z
|
||||
?GetRootMetadata@nsLayoutUtils@@SA?AV?$Maybe@UScrollMetadata@layers@mozilla@@@mozilla@@PEAVnsDisplayListBuilder@@PEAVLayerManager@layers@3@AEBUContainerLayerParameters@3@AEBV?$function@$$A6A_NAEA_K@Z@std@@@Z
|
||||
|
@ -11702,13 +11700,10 @@ ZN5style7stylist7Stylist17remove_stylesheet17h3ad60902102208fbE
|
|||
?AddRef@ShadowLayerForwarder@layers@mozilla@@UEAAKXZ
|
||||
?SetLayersObserverEpoch@ShadowLayerForwarder@layers@mozilla@@QEAAXULayersObserverEpoch@23@@Z
|
||||
?InitIPDL@CompositableClient@layers@mozilla@@QEAAXAEBVCompositableHandle@23@@Z
|
||||
?GetTextureInfo@ContentClientDoubleBuffered@layers@mozilla@@UEBA?AUTextureInfo@23@XZ
|
||||
?SendNewCompositable@PLayerTransactionChild@layers@mozilla@@QEAA_NAEBVCompositableHandle@23@AEBUTextureInfo@23@@Z
|
||||
?Read@?$IPDLParamTraits@VGfxInfoFeatureStatus@gfx@mozilla@@@ipc@mozilla@@SA_NPEBVMessage@IPC@@PEAVPickleIterator@@PEAVIProtocol@23@PEAVGfxInfoFeatureStatus@gfx@3@@Z
|
||||
?SendNewCompositable@PImageBridgeChild@layers@mozilla@@QEAA_NAEBVCompositableHandle@23@AEBUTextureInfo@23@AEBW4LayersBackend@23@@Z
|
||||
?Attach@ShadowLayerForwarder@layers@mozilla@@QEAAXPEAVCompositableClient@23@PEAVShadowableLayer@23@@Z
|
||||
?DrawTo@ContentClientBasic@layers@mozilla@@QEAAXPEAVPaintedLayer@23@PEAVDrawTarget@gfx@3@MW4CompositionOp@63@PEAVSourceSurface@63@PEBV?$BaseMatrix@M@63@@Z
|
||||
?BeginPaint@ContentClient@layers@mozilla@@UEAA?AUPaintState@123@PEAVPaintedLayer@23@I@Z
|
||||
?CanUseOpaqueSurface@Layer@layers@mozilla@@QEAA_NXZ
|
||||
?EnsureValidRegionIsCurrent@PaintedLayer@layers@mozilla@@AEBAXXZ
|
||||
??4nsRegion@@QEAAAEAV0@$$QEAV0@@Z
|
||||
|
@ -11777,7 +11772,6 @@ ARGBSetRow_X86
|
|||
?SubWith@nsRegion@@QEAAAEAV1@AEBV1@@Z
|
||||
?GetLocalVisibleRegion@Layer@layers@mozilla@@QEAAAEBV?$IntRegionTyped@ULayerPixel@mozilla@@@gfx@3@XZ
|
||||
?AndWith@nsRegion@@QEAAAEAV1@AEBV1@@Z
|
||||
?BorrowDrawTargetForPainting@ContentClient@layers@mozilla@@UEAAPEAVDrawTarget@gfx@3@AEAUPaintState@123@PEAUDrawIterator@RotatedBuffer@23@@Z
|
||||
?BorrowDrawTargetForQuadrantUpdate@RotatedBuffer@layers@mozilla@@QEAAPEAVDrawTarget@gfx@3@AEBU?$IntRectTyped@UUnknownUnits@gfx@mozilla@@@53@PEAUDrawIterator@123@@Z
|
||||
?GetBackendType@DrawTargetSkia@gfx@mozilla@@UEBA?AW4BackendType@23@XZ
|
||||
?SetAntialiasingFlags@layers@mozilla@@YAXPEAVLayer@12@PEAVDrawTarget@gfx@2@@Z
|
||||
|
@ -13272,7 +13266,6 @@ ZN5style10properties9longhands11caret_color16cascade_property17hc6f704988876f49c
|
|||
?HasMultipleChildren@ContainerLayer@layers@mozilla@@QEAA_NXZ
|
||||
?ComputeEffectiveTransformsForChildren@ContainerLayer@layers@mozilla@@IEAAXAEBV?$Matrix4x4Typed@UUnknownUnits@gfx@mozilla@@U123@M@gfx@3@@Z
|
||||
??_GReadbackLayer@layers@mozilla@@UEAAPEAXI@Z
|
||||
??0ContentClientBasic@layers@mozilla@@QEAA@W4BackendType@gfx@2@@Z
|
||||
?GetClipExtents@gfxContext@@QEBA?AU?$RectTyped@UUnknownUnits@gfx@mozilla@@N@gfx@mozilla@@W4ClipExtentsSpace@1@@Z
|
||||
?GetRect@DrawTarget@gfx@mozilla@@UEBA?AU?$IntRectTyped@UUnknownUnits@gfx@mozilla@@@23@XZ
|
||||
?ToOutsideIntRect@layers@mozilla@@YA?AU?$IntRectTyped@UUnknownUnits@gfx@mozilla@@@gfx@2@AEBU?$RectTyped@UUnknownUnits@gfx@mozilla@@N@42@@Z
|
||||
|
@ -13280,7 +13273,6 @@ ZN5style10properties9longhands11caret_color16cascade_property17hc6f704988876f49c
|
|||
?GetEffectiveTransformForBuffer@Layer@layers@mozilla@@UEBAAEBV?$Matrix4x4Typed@UUnknownUnits@gfx@mozilla@@U123@M@gfx@3@XZ
|
||||
?EndEmptyTransaction@BasicLayerManager@layers@mozilla@@UEAA_NW4EndTransactionFlags@LayerManager@23@@Z
|
||||
?TransposeTransform4D@?$Matrix4x4Typed@UUnknownUnits@gfx@mozilla@@U123@M@gfx@mozilla@@QEBA?AU?$Point4DTyped@UUnknownUnits@gfx@mozilla@@M@23@AEBU423@@Z
|
||||
?Clear@ContentClient@layers@mozilla@@UEAAXXZ
|
||||
?ComputeVisibility@nsDisplayWrapList@@UEAA_NPEAVnsDisplayListBuilder@@PEAVnsRegion@@@Z
|
||||
??$?DUUnknownUnits@gfx@mozilla@@@?$Matrix4x4TypedFlagged@UUnknownUnits@gfx@mozilla@@U123@@gfx@mozilla@@QEBA?AV012@AEBV012@@Z
|
||||
?GetCSSPxToDevPxMatrix@SVGUtils@mozilla@@SA?AV?$BaseMatrix@N@gfx@2@PEAVnsIFrame@@@Z
|
||||
|
|
|
@ -1,289 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef MOZILLA_GFX_CONTENTCLIENT_H
|
||||
#define MOZILLA_GFX_CONTENTCLIENT_H
|
||||
|
||||
#include <stdint.h> // for uint32_t
|
||||
#include "gfxTypes.h"
|
||||
#include "gfxPlatform.h" // for gfxPlatform
|
||||
#include "mozilla/Assertions.h" // for MOZ_CRASH
|
||||
#include "mozilla/Attributes.h" // for override
|
||||
#include "mozilla/RefPtr.h" // for RefPtr, already_AddRefed
|
||||
#include "mozilla/gfx/Point.h" // for IntSize
|
||||
#include "mozilla/layers/CompositableClient.h" // for CompositableClient
|
||||
#include "mozilla/layers/CompositableForwarder.h"
|
||||
#include "mozilla/layers/CompositorTypes.h" // for TextureInfo, etc
|
||||
#include "mozilla/layers/ISurfaceAllocator.h"
|
||||
#include "mozilla/layers/LayersSurfaces.h" // for SurfaceDescriptor
|
||||
#include "mozilla/layers/LayersTypes.h" // for TextureDumpMode
|
||||
#include "mozilla/layers/TextureClient.h" // for TextureClient
|
||||
#include "mozilla/Maybe.h" // for Maybe
|
||||
#include "mozilla/mozalloc.h" // for operator delete
|
||||
#include "mozilla/UniquePtr.h" // for UniquePtr
|
||||
#include "ReadbackProcessor.h" // For ReadbackProcessor::Update
|
||||
#include "nsCOMPtr.h" // for already_AddRefed
|
||||
#include "nsPoint.h" // for nsIntPoint
|
||||
#include "nsRect.h" // for mozilla::gfx::IntRect
|
||||
#include "nsRegion.h" // for nsIntRegion
|
||||
#include "nsTArray.h" // for nsTArray
|
||||
|
||||
namespace mozilla {
|
||||
namespace gfx {
|
||||
class DrawTarget;
|
||||
} // namespace gfx
|
||||
|
||||
namespace layers {
|
||||
|
||||
/**
|
||||
* A compositable client for PaintedLayers. These are different to Image/Canvas
|
||||
* clients due to sending a valid region across IPC and because we do a lot more
|
||||
* optimisation work, encapsulated in RotatedBuffers.
|
||||
*
|
||||
* We use content clients for OMTC and non-OMTC, basic rendering so that
|
||||
* BasicPaintedLayer has only one interface to deal with. We support single and
|
||||
* double buffered flavours. For tiled layers, we do not use a ContentClient
|
||||
* although we do have a ContentHost, and we do use texture clients and texture
|
||||
* hosts.
|
||||
*
|
||||
* The interface presented by ContentClient is used by the BasicPaintedLayer
|
||||
* methods - PaintThebes, which is the same for MT and OMTC, and PaintBuffer
|
||||
* which is different (the OMTC one does a little more).
|
||||
*/
|
||||
class ContentClient : public CompositableClient {
|
||||
public:
|
||||
typedef gfxContentType ContentType;
|
||||
|
||||
/**
|
||||
* Creates, configures, and returns a new content client. If necessary, a
|
||||
* message will be sent to the compositor to create a corresponding content
|
||||
* host.
|
||||
*/
|
||||
static already_AddRefed<ContentClient> CreateContentClient(
|
||||
CompositableForwarder* aFwd);
|
||||
|
||||
/**
|
||||
* Controls the size of the backing buffer of this.
|
||||
* - SizedToVisibleBounds: the backing buffer is exactly the same
|
||||
* size as the bounds of PaintedLayer's visible region
|
||||
* - ContainsVisibleBounds: the backing buffer is large enough to
|
||||
* fit visible bounds. May be larger.
|
||||
*/
|
||||
enum BufferSizePolicy { SizedToVisibleBounds, ContainsVisibleBounds };
|
||||
|
||||
ContentClient(CompositableForwarder* aForwarder,
|
||||
BufferSizePolicy aBufferSizePolicy)
|
||||
: CompositableClient(aForwarder), mBufferSizePolicy(aBufferSizePolicy) {}
|
||||
|
||||
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix);
|
||||
|
||||
virtual void Clear();
|
||||
|
||||
/**
|
||||
* This is returned by BeginPaint. The caller should draw into mTarget.
|
||||
* mRegionToDraw must be drawn. mRegionToInvalidate has been invalidated
|
||||
* by ContentClient and must be redrawn on the screen.
|
||||
* mRegionToInvalidate is set when the buffer has changed from
|
||||
* opaque to transparent or vice versa, since the details of rendering can
|
||||
* depend on the buffer type.
|
||||
*/
|
||||
struct PaintState {
|
||||
PaintState()
|
||||
: mRegionToDraw(),
|
||||
mRegionToInvalidate(),
|
||||
mMode(SurfaceMode::SURFACE_NONE),
|
||||
mClip(DrawRegionClip::NONE),
|
||||
mContentType(gfxContentType::SENTINEL) {}
|
||||
|
||||
nsIntRegion mRegionToDraw;
|
||||
nsIntRegion mRegionToInvalidate;
|
||||
SurfaceMode mMode;
|
||||
DrawRegionClip mClip;
|
||||
gfxContentType mContentType;
|
||||
};
|
||||
|
||||
enum {
|
||||
PAINT_WILL_RESAMPLE = 0x01,
|
||||
PAINT_NO_ROTATION = 0x02,
|
||||
PAINT_CAN_DRAW_ROTATED = 0x04,
|
||||
PAINT_ASYNC = 0x08,
|
||||
};
|
||||
|
||||
/**
|
||||
* Start a drawing operation. This returns a PaintState describing what
|
||||
* needs to be drawn to bring the buffer up to date in the visible region.
|
||||
* This queries aLayer to get the currently valid and visible regions.
|
||||
* The returned mTarget may be null if mRegionToDraw is empty.
|
||||
* Otherwise it must not be null.
|
||||
* mRegionToInvalidate will contain mRegionToDraw.
|
||||
* @param aFlags when PAINT_WILL_RESAMPLE is passed, this indicates that
|
||||
* buffer will be resampled when rendering (i.e the effective transform
|
||||
* combined with the scale for the resolution is not just an integer
|
||||
* translation). This will disable buffer rotation (since we don't want
|
||||
* to resample across the rotation boundary) and will ensure that we
|
||||
* make the entire buffer contents valid (since we don't want to sample
|
||||
* invalid pixels outside the visible region, if the visible region doesn't
|
||||
* fill the buffer bounds).
|
||||
* PAINT_CAN_DRAW_ROTATED can be passed if the caller supports drawing
|
||||
* rotated content that crosses the physical buffer boundary. The caller
|
||||
* will need to call BorrowDrawTargetForPainting multiple times to achieve
|
||||
* this.
|
||||
*/
|
||||
virtual PaintState BeginPaint(PaintedLayer* aLayer, uint32_t aFlags);
|
||||
virtual void EndPaint(
|
||||
PaintState& aPaintState,
|
||||
nsTArray<ReadbackProcessor::Update>* aReadbackUpdates = nullptr);
|
||||
|
||||
void ReturnDrawTarget(gfx::DrawTarget*& aReturned);
|
||||
|
||||
enum {
|
||||
BUFFER_COMPONENT_ALPHA = 0x02 // Dual buffers should be created for drawing
|
||||
// with component alpha.
|
||||
};
|
||||
|
||||
protected:
|
||||
struct BufferDecision {
|
||||
nsIntRegion mNeededRegion;
|
||||
nsIntRegion mValidRegion;
|
||||
gfx::IntRect mBufferRect;
|
||||
SurfaceMode mBufferMode;
|
||||
gfxContentType mBufferContentType;
|
||||
bool mCanReuseBuffer;
|
||||
bool mCanKeepBufferContents;
|
||||
};
|
||||
|
||||
/**
|
||||
* Decide whether we can keep our current buffer and its contents,
|
||||
* and return a struct containing the regions to paint, invalidate,
|
||||
* the new buffer rect, surface mode, and content type.
|
||||
*/
|
||||
BufferDecision CalculateBufferForPaint(PaintedLayer* aLayer, uint32_t aFlags);
|
||||
|
||||
static bool ValidBufferSize(BufferSizePolicy aPolicy,
|
||||
const gfx::IntSize& aBufferSize,
|
||||
const gfx::IntSize& aVisibleBoundsSize);
|
||||
|
||||
/**
|
||||
* Any actions that should be performed at the last moment before we begin
|
||||
* rendering the next frame. I.e., after we calculate what we will draw,
|
||||
* but before we rotate the buffer and possibly create new buffers.
|
||||
* aRegionToDraw is the region which is guaranteed to be overwritten when
|
||||
* drawing the next frame.
|
||||
*/
|
||||
virtual void FinalizeFrame(PaintState& aPaintState) {}
|
||||
|
||||
BufferSizePolicy mBufferSizePolicy;
|
||||
};
|
||||
|
||||
/**
|
||||
* A ContentClient backed by a RemoteRotatedBuffer.
|
||||
*
|
||||
* When using a ContentClientRemoteBuffer, SurfaceDescriptors are created on
|
||||
* the rendering side and destroyed on the compositing side. They are only
|
||||
* passed from one side to the other when the TextureClient/Hosts are created.
|
||||
* *Ownership* of the SurfaceDescriptor moves from the rendering side to the
|
||||
* compositing side with the create message (send from CreateBuffer) which
|
||||
* tells the compositor that TextureClients have been created and that the
|
||||
* compositor should assign the corresponding TextureHosts to our corresponding
|
||||
* ContentHost.
|
||||
*
|
||||
* If the size or type of our buffer(s) change(s), then we simply destroy and
|
||||
* create them.
|
||||
*/
|
||||
class ContentClientRemoteBuffer : public ContentClient {
|
||||
public:
|
||||
explicit ContentClientRemoteBuffer(CompositableForwarder* aForwarder)
|
||||
: ContentClient(aForwarder, ContainsVisibleBounds), mIsNewBuffer(false) {}
|
||||
|
||||
void Dump(std::stringstream& aStream, const char* aPrefix = "",
|
||||
bool aDumpHtml = false,
|
||||
TextureDumpMode aCompress = TextureDumpMode::Compress) override;
|
||||
|
||||
void EndPaint(
|
||||
PaintState& aPaintState,
|
||||
nsTArray<ReadbackProcessor::Update>* aReadbackUpdates = nullptr) override;
|
||||
|
||||
void Updated(const nsIntRegion& aRegionToDraw,
|
||||
const nsIntRegion& aVisibleRegion);
|
||||
|
||||
TextureFlags ExtraTextureFlags() const {
|
||||
return TextureFlags::IMMEDIATE_UPLOAD;
|
||||
}
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Called when we have been updated and should swap references to our
|
||||
* buffers.
|
||||
*/
|
||||
virtual void SwapBuffers(const nsIntRegion& aFrontUpdatedRegion) {}
|
||||
|
||||
virtual nsIntRegion GetUpdatedRegion(const nsIntRegion& aRegionToDraw,
|
||||
const nsIntRegion& aVisibleRegion);
|
||||
|
||||
|
||||
bool mIsNewBuffer;
|
||||
};
|
||||
|
||||
/**
|
||||
* A double buffered ContentClientRemoteBuffer. mBuffer is the back buffer,
|
||||
* which we draw into. mFrontBuffer is the front buffer which we may read from,
|
||||
* but not write to, when the compositor does not have the 'soft' lock.
|
||||
*
|
||||
* The ContentHost keeps a reference to both corresponding texture hosts, in
|
||||
* response to our UpdateTextureRegion message, the compositor swaps its
|
||||
* references.
|
||||
*/
|
||||
class ContentClientDoubleBuffered : public ContentClientRemoteBuffer {
|
||||
public:
|
||||
explicit ContentClientDoubleBuffered(CompositableForwarder* aFwd)
|
||||
: ContentClientRemoteBuffer(aFwd), mFrontAndBackBufferDiffer(false) {}
|
||||
|
||||
void Dump(std::stringstream& aStream, const char* aPrefix = "",
|
||||
bool aDumpHtml = false,
|
||||
TextureDumpMode aCompress = TextureDumpMode::Compress) override;
|
||||
|
||||
void Clear() override;
|
||||
|
||||
void SwapBuffers(const nsIntRegion& aFrontUpdatedRegion) override;
|
||||
|
||||
PaintState BeginPaint(PaintedLayer* aLayer, uint32_t aFlags) override;
|
||||
|
||||
void FinalizeFrame(PaintState& aPaintState) override;
|
||||
|
||||
TextureInfo GetTextureInfo() const override {
|
||||
return TextureInfo(CompositableType::CONTENT_DOUBLE, mTextureFlags);
|
||||
}
|
||||
|
||||
private:
|
||||
void EnsureBackBufferIfFrontBuffer();
|
||||
|
||||
nsIntRegion mFrontUpdatedRegion;
|
||||
bool mFrontAndBackBufferDiffer;
|
||||
};
|
||||
|
||||
/**
|
||||
* A single buffered ContentClientRemoteBuffer. We have a single
|
||||
* TextureClient/Host which we update and then send a message to the
|
||||
* compositor that we are done updating. It is not safe for the compositor
|
||||
* to use the corresponding TextureHost's memory directly, it must upload
|
||||
* it to video memory of some kind. We are free to modify the TextureClient
|
||||
* once we receive reply from the compositor.
|
||||
*/
|
||||
class ContentClientSingleBuffered : public ContentClientRemoteBuffer {
|
||||
public:
|
||||
explicit ContentClientSingleBuffered(CompositableForwarder* aFwd)
|
||||
: ContentClientRemoteBuffer(aFwd) {}
|
||||
|
||||
TextureInfo GetTextureInfo() const override {
|
||||
return TextureInfo(CompositableType::CONTENT_SINGLE,
|
||||
mTextureFlags | ExtraTextureFlags());
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
||||
|
||||
#endif
|
|
@ -113,7 +113,6 @@ EXPORTS.mozilla.layers += [
|
|||
"CanvasRenderer.h",
|
||||
"client/CanvasClient.h",
|
||||
"client/CompositableClient.h",
|
||||
"client/ContentClient.h",
|
||||
"client/GPUVideoTextureClient.h",
|
||||
"client/ImageClient.h",
|
||||
"client/TextureClient.h",
|
||||
|
|
Загрузка…
Ссылка в новой задаче