gecko-dev/gfx/layers/moz.build

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

606 строки
19 KiB
Plaintext
Исходник Обычный вид История

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
with Files('**'):
BUG_COMPONENT = ('Core', 'Graphics: Layers')
with Files('apz/**'):
BUG_COMPONENT = ('Core', 'Panning and Zooming')
EXPORTS += [
'basic/BasicCanvasLayer.h',
'basic/BasicImplData.h',
'basic/BasicLayers.h',
'basic/BasicLayersImpl.h',
'basic/BasicPaintedLayer.h',
'client/ClientCanvasLayer.h',
'client/ClientContainerLayer.h',
'client/ClientLayerManager.h',
'client/ClientPaintedLayer.h',
'client/ClientTiledPaintedLayer.h',
'composite/CompositableHost.h',
'composite/ImageHost.h',
'CompositorTypes.h',
'D3D9SurfaceImage.h',
'FrameMetrics.h',
'GLImages.h',
'GPUVideoImage.h',
'ImageContainer.h',
'ImageLayers.h',
'ImageTypes.h',
'IMFYCbCrImage.h',
'ipc/ThreadSafeRefcountingWithMainThreadDestruction.h',
'Layers.h',
'LayerScope.h',
'LayersLogging.h',
'LayerSorter.h',
'LayersTypes.h',
'LayerTreeInvalidation.h',
'LayerUserData.h',
'opengl/OGLShaderConfig.h',
'opengl/OGLShaderProgram.h',
'protobuf/LayerScopePacket.pb.h',
'ReadbackLayer.h',
'TiledLayerBuffer.h',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
SOURCES += [
'D3D11ShareHandleImage.cpp',
'D3D11YCbCrImage.cpp',
]
UNIFIED_SOURCES += [
'D3D9SurfaceImage.cpp',
'IMFYCbCrImage.cpp',
'TextureDIB.cpp',
]
EXPORTS.mozilla.layers += [
'TextureDIB.h',
]
if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
EXPORTS.mozilla.layers += [
'd3d11/CompositorD3D11.h',
'd3d11/DeviceAttachmentsD3D11.h',
'd3d11/DiagnosticsD3D11.h',
'd3d11/HelpersD3D11.h',
'd3d11/MLGDeviceD3D11.h',
'd3d11/ReadbackManagerD3D11.h',
'd3d11/ShaderDefinitionsD3D11.h',
'd3d11/TextureD3D11.h',
]
UNIFIED_SOURCES += [
'd3d11/DiagnosticsD3D11.cpp',
'd3d11/MLGDeviceD3D11.cpp',
'd3d11/TextureD3D11.cpp',
]
SOURCES += [
'd3d11/CompositorD3D11.cpp',
'd3d11/DeviceAttachmentsD3D11.cpp',
'd3d11/ReadbackManagerD3D11.cpp',
]
EXPORTS.gfxipc += [
'ipc/ShadowLayerUtils.h',
]
EXPORTS.mozilla.dom += [
'apz/util/CheckerboardReportService.h',
]
EXPORTS.mozilla.layers += [
'AnimationHelper.h',
'AnimationInfo.h',
'apz/public/APZInputBridge.h',
'apz/public/APZSampler.h',
'apz/public/APZUpdater.h',
'apz/public/CompositorController.h',
'apz/public/GeckoContentController.h',
'apz/public/IAPZCTreeManager.h',
'apz/public/MatrixMessage.h',
'apz/public/MetricsSharingController.h',
# exporting things from apz/src is temporary until we extract a
# proper interface for the code there
'apz/src/APZUtils.h',
'apz/src/AsyncDragMetrics.h',
'apz/src/FocusTarget.h',
'apz/src/KeyboardMap.h',
'apz/src/KeyboardScrollAction.h',
'apz/testutil/APZTestData.h',
'apz/util/ActiveElementManager.h',
'apz/util/APZCCallbackHelper.h',
'apz/util/APZEventState.h',
'apz/util/APZThreadUtils.h',
'apz/util/ChromeProcessController.h',
'apz/util/ContentProcessController.h',
'apz/util/DoubleTapToZoom.h',
'apz/util/InputAPZContext.h',
'apz/util/ScrollLinkedEffectDetector.h',
'apz/util/TouchActionHelper.h',
'apz/util/TouchCounter.h',
'AsyncCanvasRenderer.h',
'AtomicRefCountedWithFinalize.h',
'AxisPhysicsModel.h',
'AxisPhysicsMSDModel.h',
'basic/BasicCompositor.h',
'basic/MacIOSurfaceTextureHostBasic.h',
'basic/TextureHostBasic.h',
'BSPTree.h',
'BufferTexture.h',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'CanvasRenderer.h',
'client/CanvasClient.h',
'client/CompositableClient.h',
'client/ContentClient.h',
'client/GPUVideoTextureClient.h',
'client/ImageClient.h',
'client/MultiTiledContentClient.h',
'client/SingleTiledContentClient.h',
'client/TextureClient.h',
'client/TextureClientPool.h',
'client/TextureClientRecycleAllocator.h',
'client/TextureClientSharedSurface.h',
'client/TiledContentClient.h',
'composite/AsyncCompositionManager.h',
'composite/CanvasLayerComposite.h',
'composite/ColorLayerComposite.h',
'composite/CompositorScreenshotGrabber.h',
'composite/ContainerLayerComposite.h',
'composite/ContentHost.h',
'composite/Diagnostics.h',
'composite/FPSCounter.h',
'composite/FrameUniformityData.h',
'composite/GPUVideoTextureHost.h',
'composite/ImageComposite.h',
'composite/ImageHost.h',
'composite/ImageLayerComposite.h',
'composite/LayerManagerComposite.h',
'composite/PaintedLayerComposite.h',
'composite/TextRenderer.h',
'composite/TextureHost.h',
'composite/TiledContentHost.h',
'Compositor.h',
'CompositorTypes.h',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'CopyableCanvasRenderer.h',
'D3D11ShareHandleImage.h',
'D3D11YCbCrImage.h',
'D3D9SurfaceImage.h',
'DirectionUtils.h',
'Effects.h',
'ImageDataSerializer.h',
'ipc/APZChild.h',
'ipc/APZCTreeManagerChild.h',
'ipc/APZCTreeManagerParent.h',
'ipc/APZInputBridgeChild.h',
'ipc/APZInputBridgeParent.h',
'ipc/CompositableForwarder.h',
'ipc/CompositableTransactionParent.h',
'ipc/CompositorBridgeChild.h',
'ipc/CompositorBridgeParent.h',
'ipc/CompositorManagerChild.h',
'ipc/CompositorManagerParent.h',
'ipc/CompositorThread.h',
'ipc/CompositorVsyncScheduler.h',
'ipc/CompositorVsyncSchedulerOwner.h',
'ipc/ContentCompositorBridgeParent.h',
'ipc/ImageBridgeChild.h',
'ipc/ImageBridgeParent.h',
'ipc/ISurfaceAllocator.h',
'ipc/KnowsCompositor.h',
'ipc/LayerAnimationUtils.h',
'ipc/LayersMessageUtils.h',
'ipc/LayerTransactionChild.h',
'ipc/LayerTransactionParent.h',
'ipc/LayerTreeOwnerTracker.h',
'ipc/RefCountedShmem.h',
'ipc/RemoteContentController.h',
'ipc/ShadowLayers.h',
'ipc/SharedPlanarYCbCrImage.h',
'ipc/SharedRGBImage.h',
'ipc/SharedSurfacesChild.h',
'ipc/SharedSurfacesMemoryReport.h',
'ipc/SharedSurfacesParent.h',
'ipc/SynchronousTask.h',
'ipc/TextureForwarder.h',
'ipc/UiCompositorControllerChild.h',
'ipc/UiCompositorControllerMessageTypes.h',
'ipc/UiCompositorControllerParent.h',
'ipc/VideoBridgeChild.h',
'ipc/VideoBridgeParent.h',
'LayerAttributes.h',
'LayerMetricsWrapper.h',
'LayersHelpers.h',
'LayersTypes.h',
'MemoryPressureObserver.h',
'mlgpu/LayerManagerMLGPU.h',
'mlgpu/LayerMLGPU.h',
'mlgpu/MemoryReportingMLGPU.h',
'mlgpu/MLGDevice.h',
'mlgpu/MLGDeviceTypes.h',
'mlgpu/MLGPUScreenshotGrabber.h',
'mlgpu/ShaderDefinitionsMLGPU.h',
'mlgpu/UtilityMLGPU.h',
'opengl/CompositingRenderTargetOGL.h',
'opengl/CompositorOGL.h',
'opengl/MacIOSurfaceTextureClientOGL.h',
'opengl/MacIOSurfaceTextureHostOGL.h',
'opengl/TextureClientOGL.h',
'opengl/TextureHostOGL.h',
'PaintThread.h',
'PersistentBufferProvider.h',
'ProfilerScreenshots.h',
'RenderTrace.h',
'RepaintRequest.h',
'RotatedBuffer.h',
'ScrollableLayerGuid.h',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'ShareableCanvasRenderer.h',
'SourceSurfaceSharedData.h',
'SourceSurfaceVolatileData.h',
'SyncObject.h',
'TextureSourceProvider.h',
'TextureWrapperImage.h',
'TransactionIdAllocator.h',
'UpdateImageHelper.h',
'wr/AsyncImagePipelineManager.h',
Bug 1377187 - Rewrite the clipping code to use the new clipchain API. r=mstange The clip chain API in webrender allows us to build the clip state in WR so that it matches the gecko display list more closely. This patch throws away ScrollingLayersHelper.* and introduces ClipManager.* which pushes the clip state to WR using the new method. A quick summary of the new method is below. Each display item in gecko has a DisplayItemClipChain which is a chain of individual clips. The individual clips are defined in WR, and the clip ids for those clips are put into a WR clip chain using the new define_clip_chain API. Furthermore, each clip chain can also have a parent chain, which is used to link a DisplayItemClipChain to the parent display item's DisplayItemClipChain. This allows the WR clip state to closely match the structure of the gecko display list clip state, resulting in more correct behaviour. There are a few other major changes that are lumped into this patch and that were tricky to separate into their own patches: - The collapsing of WrScrollId and WrStickyId into WrClipId. On the WR side all the clip ids are treated the same anyway. Trying to preserve the arbitrary distinction on the gecko side was resulting in increasingly convoluted code, with different kinds of Variant<..> types in the method signatures. It was much simpler and resulted in a bunch of code deletion to just collapse the types. - Moving the "override" mechanism from WebRenderAPI to ClipManager. The override mechanism (explained in ClipManager.h) was simplified by moving it into ClipManager, because it removed the need for tracking additional clip stack state in WebRenderAPI. MozReview-Commit-ID: GGbdFyJGprK --HG-- extra : rebase_source : baa56ff179e917b0ab5a5c186a3a415761f8050a
2018-05-08 16:08:39 +03:00
'wr/ClipManager.h',
'wr/IpcResourceUpdateQueue.h',
'wr/RenderRootStateManager.h',
'wr/StackingContextHelper.h',
'wr/WebRenderBridgeChild.h',
'wr/WebRenderBridgeParent.h',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'wr/WebRenderCanvasRenderer.h',
'wr/WebRenderCommandBuilder.h',
'wr/WebRenderDrawEventRecorder.h',
'wr/WebRenderImageHost.h',
'wr/WebRenderLayerManager.h',
'wr/WebRenderLayersLogging.h',
'wr/WebRenderMessageUtils.h',
'wr/WebRenderScrollData.h',
'wr/WebRenderScrollDataWrapper.h',
'wr/WebRenderTextureHost.h',
'wr/WebRenderTextureHostWrapper.h',
'wr/WebRenderUserData.h',
'ZoomConstraints.h',
]
if CONFIG['MOZ_X11']:
EXPORTS.mozilla.layers += [
'basic/TextureClientX11.h',
'basic/X11TextureSourceBasic.h',
'composite/X11TextureHost.h',
'ipc/ShadowLayerUtilsX11.h',
'opengl/X11TextureSourceOGL.h',
]
SOURCES += [
'basic/TextureClientX11.cpp',
'basic/X11BasicCompositor.cpp',
'basic/X11TextureSourceBasic.cpp',
'composite/X11TextureHost.cpp',
'ipc/ShadowLayerUtilsX11.cpp',
'opengl/X11TextureSourceOGL.cpp',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
EXPORTS.mozilla.layers += [
'opengl/GLManager.h',
Bug 1265824 - Wait on texture handles with IPC r=jld,mattwoodrow There's a lot going on here, but it all fits under the idea of being able to communicate about texture locking statuses without spinning on IsReadLocked. This is a bit of a trade - we could just always allocate/grab a texture from the pool, which would put a smaller cap on the amount of time we can possibly spend when a texture is locked. However, this eats up more CPU and memory than waiting on the textures to unlock, and could take longer, especially if there were a large number of textures which we just need to wait for for a short amount of time. In any case, we very rarely hit the case where we actually need to wait on the sync IPC to the compositor - most of the time the textures are already unlocked. There is also an async IPC call in here, which we make before flushing async paints. This just causes the compositor to check whether the GPU is done with its textures or not and unlock them if it is. This helps us avoid the case where we take a long time painting asynchronously, turn IPC back on at the end of that, and then have to wait for the compositor to to get into TiledLayerBufferComposite::UseTiles before getting a response. Specifically this eliminates several talos regressions which use ASAP mode. Lastly, there seem to be no other cases of static Monitors being used. This seems like it falls under similar use cases as StaticMutexes, so I added it in. I can move it into its own file if we think it might be generally useful in the future. MozReview-Commit-ID: IYQLwUqMxg2 --HG-- extra : rebase_source : 4f05832f51dae6db98773dcad03cb008a80eca6c
2018-05-06 01:46:26 +03:00
'TextureSync.h',
]
EXPORTS += [
'MacIOSurfaceHelpers.h',
'MacIOSurfaceImage.h',
]
UNIFIED_SOURCES += [
'opengl/GLManager.cpp',
Bug 1265824 - Wait on texture handles with IPC r=jld,mattwoodrow There's a lot going on here, but it all fits under the idea of being able to communicate about texture locking statuses without spinning on IsReadLocked. This is a bit of a trade - we could just always allocate/grab a texture from the pool, which would put a smaller cap on the amount of time we can possibly spend when a texture is locked. However, this eats up more CPU and memory than waiting on the textures to unlock, and could take longer, especially if there were a large number of textures which we just need to wait for for a short amount of time. In any case, we very rarely hit the case where we actually need to wait on the sync IPC to the compositor - most of the time the textures are already unlocked. There is also an async IPC call in here, which we make before flushing async paints. This just causes the compositor to check whether the GPU is done with its textures or not and unlock them if it is. This helps us avoid the case where we take a long time painting asynchronously, turn IPC back on at the end of that, and then have to wait for the compositor to to get into TiledLayerBufferComposite::UseTiles before getting a response. Specifically this eliminates several talos regressions which use ASAP mode. Lastly, there seem to be no other cases of static Monitors being used. This seems like it falls under similar use cases as StaticMutexes, so I added it in. I can move it into its own file if we think it might be generally useful in the future. MozReview-Commit-ID: IYQLwUqMxg2 --HG-- extra : rebase_source : 4f05832f51dae6db98773dcad03cb008a80eca6c
2018-05-06 01:46:26 +03:00
'TextureSync.cpp',
]
SOURCES += [
'ipc/ShadowLayerUtilsMac.cpp',
'MacIOSurfaceHelpers.cpp',
'MacIOSurfaceImage.cpp',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
UNIFIED_SOURCES += [
'apz/src/AndroidAPZ.cpp',
'apz/src/AndroidDynamicToolbarAnimator.cpp',
'apz/src/AndroidFlingPhysics.cpp',
'apz/src/AndroidVelocityTracker.cpp',
]
EXPORTS.mozilla.layers += [
'apz/src/AndroidDynamicToolbarAnimator.h',
]
UNIFIED_SOURCES += [
'AnimationHelper.cpp',
'AnimationInfo.cpp',
'apz/src/APZCTreeManager.cpp',
'apz/src/APZInputBridge.cpp',
'apz/src/APZSampler.cpp',
'apz/src/APZUpdater.cpp',
'apz/src/APZUtils.cpp',
'apz/src/AsyncPanZoomController.cpp',
'apz/src/AutoscrollAnimation.cpp',
'apz/src/Axis.cpp',
'apz/src/CheckerboardEvent.cpp',
'apz/src/DragTracker.cpp',
'apz/src/FocusState.cpp',
'apz/src/FocusTarget.cpp',
'apz/src/GenericScrollAnimation.cpp',
'apz/src/GestureEventListener.cpp',
'apz/src/HitTestingTreeNode.cpp',
'apz/src/InputBlockState.cpp',
'apz/src/InputQueue.cpp',
'apz/src/KeyboardMap.cpp',
'apz/src/KeyboardScrollAction.cpp',
'apz/src/KeyboardScrollAnimation.cpp',
'apz/src/OverscrollHandoffState.cpp',
'apz/src/PotentialCheckerboardDurationTracker.cpp',
'apz/src/QueuedInput.cpp',
'apz/src/SimpleVelocityTracker.cpp',
'apz/src/WheelScrollAnimation.cpp',
'apz/testutil/APZTestData.cpp',
'apz/util/ActiveElementManager.cpp',
'apz/util/APZCCallbackHelper.cpp',
'apz/util/APZEventState.cpp',
'apz/util/APZThreadUtils.cpp',
'apz/util/CheckerboardReportService.cpp',
'apz/util/ChromeProcessController.cpp',
'apz/util/ContentProcessController.cpp',
'apz/util/DoubleTapToZoom.cpp',
'apz/util/InputAPZContext.cpp',
'apz/util/ScrollLinkedEffectDetector.cpp',
'apz/util/TouchActionHelper.cpp',
'apz/util/TouchCounter.cpp',
'AsyncCanvasRenderer.cpp',
'AxisPhysicsModel.cpp',
'AxisPhysicsMSDModel.cpp',
'basic/BasicCanvasLayer.cpp',
'basic/BasicColorLayer.cpp',
'basic/BasicCompositor.cpp',
'basic/BasicContainerLayer.cpp',
'basic/BasicImages.cpp',
'basic/BasicLayerManager.cpp',
'basic/BasicLayersImpl.cpp',
'basic/BasicPaintedLayer.cpp',
'basic/TextureHostBasic.cpp',
'BSPTree.cpp',
'BufferTexture.cpp',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'CanvasRenderer.cpp',
'client/CanvasClient.cpp',
'client/ClientCanvasLayer.cpp',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'client/ClientCanvasRenderer.cpp',
'client/ClientColorLayer.cpp',
'client/ClientContainerLayer.cpp',
'client/ClientImageLayer.cpp',
'client/ClientLayerManager.cpp',
'client/ClientPaintedLayer.cpp',
'client/ClientTiledPaintedLayer.cpp',
'client/CompositableClient.cpp',
'client/ContentClient.cpp',
'client/GPUVideoTextureClient.cpp',
'client/ImageClient.cpp',
'client/MultiTiledContentClient.cpp',
'client/SingleTiledContentClient.cpp',
'client/TextureClient.cpp',
'client/TextureClientPool.cpp',
'client/TextureClientRecycleAllocator.cpp',
'client/TextureClientSharedSurface.cpp',
'client/TiledContentClient.cpp',
'composite/AsyncCompositionManager.cpp',
'composite/CanvasLayerComposite.cpp',
'composite/ColorLayerComposite.cpp',
'composite/CompositableHost.cpp',
'composite/CompositorScreenshotGrabber.cpp',
'composite/ContainerLayerComposite.cpp',
'composite/ContentHost.cpp',
'composite/Diagnostics.cpp',
'composite/FPSCounter.cpp',
'composite/FrameUniformityData.cpp',
'composite/GPUVideoTextureHost.cpp',
'composite/ImageComposite.cpp',
'composite/ImageHost.cpp',
'composite/ImageLayerComposite.cpp',
'composite/LayerManagerComposite.cpp',
'composite/PaintedLayerComposite.cpp',
'composite/TextRenderer.cpp',
'composite/TextureHost.cpp',
'composite/TiledContentHost.cpp',
'Compositor.cpp',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'CopyableCanvasRenderer.cpp',
'Effects.cpp',
'FrameMetrics.cpp',
'GLImages.cpp',
'ImageDataSerializer.cpp',
'ImageLayers.cpp',
'ipc/APZChild.cpp',
'ipc/APZCTreeManagerChild.cpp',
'ipc/APZCTreeManagerParent.cpp',
'ipc/APZInputBridgeChild.cpp',
'ipc/APZInputBridgeParent.cpp',
'ipc/CompositableTransactionParent.cpp',
'ipc/CompositorBench.cpp',
'ipc/CompositorBridgeChild.cpp',
'ipc/CompositorBridgeParent.cpp',
'ipc/CompositorManagerChild.cpp',
'ipc/CompositorManagerParent.cpp',
'ipc/CompositorThread.cpp',
'ipc/CompositorVsyncScheduler.cpp',
'ipc/ContentCompositorBridgeParent.cpp',
'ipc/ImageBridgeChild.cpp',
'ipc/ImageBridgeParent.cpp',
'ipc/ISurfaceAllocator.cpp',
'ipc/LayerAnimationUtils.cpp',
'ipc/LayerTransactionChild.cpp',
'ipc/LayerTransactionParent.cpp',
'ipc/LayerTreeOwnerTracker.cpp',
'ipc/RefCountedShmem.cpp',
'ipc/RemoteContentController.cpp',
'ipc/ShadowLayers.cpp',
'ipc/SharedPlanarYCbCrImage.cpp',
'ipc/SharedRGBImage.cpp',
'ipc/SharedSurfacesChild.cpp',
'ipc/SharedSurfacesParent.cpp',
'ipc/UiCompositorControllerChild.cpp',
'ipc/UiCompositorControllerParent.cpp',
'ipc/VideoBridgeChild.cpp',
'ipc/VideoBridgeParent.cpp',
'Layers.cpp',
'LayerScope.cpp',
'LayersHelpers.cpp',
'LayersLogging.cpp',
'LayerSorter.cpp',
'LayersTypes.cpp',
'LayerTreeInvalidation.cpp',
'MemoryPressureObserver.cpp',
'mlgpu/BufferCache.cpp',
'mlgpu/CanvasLayerMLGPU.cpp',
'mlgpu/ContainerLayerMLGPU.cpp',
'mlgpu/FrameBuilder.cpp',
'mlgpu/ImageLayerMLGPU.cpp',
'mlgpu/LayerManagerMLGPU.cpp',
'mlgpu/LayerMLGPU.cpp',
'mlgpu/MaskOperation.cpp',
'mlgpu/MemoryReportingMLGPU.cpp',
'mlgpu/MLGDevice.cpp',
'mlgpu/MLGPUScreenshotGrabber.cpp',
'mlgpu/PaintedLayerMLGPU.cpp',
'mlgpu/RenderPassMLGPU.cpp',
'mlgpu/RenderViewMLGPU.cpp',
'mlgpu/SharedBufferMLGPU.cpp',
'mlgpu/StagingBuffer.cpp',
'mlgpu/TexturedLayerMLGPU.cpp',
'mlgpu/TextureSourceProviderMLGPU.cpp',
'opengl/CompositingRenderTargetOGL.cpp',
'opengl/CompositorOGL.cpp',
'opengl/GLBlitTextureImageHelper.cpp',
'opengl/OGLShaderProgram.cpp',
'opengl/TextureClientOGL.cpp',
'opengl/TextureHostOGL.cpp',
'PaintThread.cpp',
'ProfilerScreenshots.cpp',
'ReadbackProcessor.cpp',
'RenderTrace.cpp',
'RotatedBuffer.cpp',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'ShareableCanvasRenderer.cpp',
'SourceSurfaceSharedData.cpp',
'SourceSurfaceVolatileData.cpp',
'SyncObject.cpp',
'TextureSourceProvider.cpp',
'TextureWrapperImage.cpp',
'wr/AsyncImagePipelineManager.cpp',
Bug 1377187 - Rewrite the clipping code to use the new clipchain API. r=mstange The clip chain API in webrender allows us to build the clip state in WR so that it matches the gecko display list more closely. This patch throws away ScrollingLayersHelper.* and introduces ClipManager.* which pushes the clip state to WR using the new method. A quick summary of the new method is below. Each display item in gecko has a DisplayItemClipChain which is a chain of individual clips. The individual clips are defined in WR, and the clip ids for those clips are put into a WR clip chain using the new define_clip_chain API. Furthermore, each clip chain can also have a parent chain, which is used to link a DisplayItemClipChain to the parent display item's DisplayItemClipChain. This allows the WR clip state to closely match the structure of the gecko display list clip state, resulting in more correct behaviour. There are a few other major changes that are lumped into this patch and that were tricky to separate into their own patches: - The collapsing of WrScrollId and WrStickyId into WrClipId. On the WR side all the clip ids are treated the same anyway. Trying to preserve the arbitrary distinction on the gecko side was resulting in increasingly convoluted code, with different kinds of Variant<..> types in the method signatures. It was much simpler and resulted in a bunch of code deletion to just collapse the types. - Moving the "override" mechanism from WebRenderAPI to ClipManager. The override mechanism (explained in ClipManager.h) was simplified by moving it into ClipManager, because it removed the need for tracking additional clip stack state in WebRenderAPI. MozReview-Commit-ID: GGbdFyJGprK --HG-- extra : rebase_source : baa56ff179e917b0ab5a5c186a3a415761f8050a
2018-05-08 16:08:39 +03:00
'wr/ClipManager.cpp',
'wr/IpcResourceUpdateQueue.cpp',
'wr/RenderRootStateManager.cpp',
'wr/StackingContextHelper.cpp',
'wr/WebRenderBridgeChild.cpp',
'wr/WebRenderBridgeParent.cpp',
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
'wr/WebRenderCanvasRenderer.cpp',
'wr/WebRenderCommandBuilder.cpp',
'wr/WebRenderDrawEventRecorder.cpp',
'wr/WebRenderImageHost.cpp',
'wr/WebRenderLayerManager.cpp',
'wr/WebRenderLayersLogging.cpp',
'wr/WebRenderScrollData.cpp',
'wr/WebRenderTextureHostWrapper.cpp',
'wr/WebRenderUserData.cpp',
# XXX here are some unified build error.
#'wr/WebRenderTextureHost.cpp'
]
SOURCES += [
'basic/BasicImageLayer.cpp',
'ImageContainer.cpp',
'PersistentBufferProvider.cpp',
Bug 1385461 - Upgrade to the latest version of the protobuf library. r=dimi,fitzgen,glandium,mattwoodrow,mossop The tarball that was imported is the 3.4.1 release: https://github.com/google/protobuf/releases/tag/v3.4.1 https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz This drops all of the customizations that are no longer needed, which includes a few issues that were fixed upstream: - r512.patch from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/r512.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/io/zero_copy_stream_impl.cc#L43 - vs2013.patch, also from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/vs2013.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/wire_format_lite_inl.h#L39 - sparc64 fixes in m-c-changes.patch from bug 1275204: https://hg.mozilla.org/integration/mozilla-inbound/rev/21d692e82582 https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/stubs/platform_macros.h#L68 The LOGLEVEL_ERROR hack in m-c-changes.patch from bug 1024774 and bug 1320179 was replaced by a NOGDI define in moz.build as suggested by upstream: https://github.com/google/protobuf/pull/3745/files#r144915445 The other customizations that were dropped came from bug 1024774. The patch for OpenBSD/32-bit will likely be fixed upstream in a future release: https://github.com/google/protobuf/pull/3747#issuecomment-336581244 Upgrading the protobuf library also required re-generating all of the existing .pb.h and pb.cc files (they are neither forward nor backward-compatible) and making adjustments to the build config to make it compile (and silence warnings). text_format.cc can now be compiled as part of UNIFIED_SOURCES. MozReview-Commit-ID: 7F2IqFmwQnN --HG-- extra : rebase_source : b907a28a8063ecd82bb38530d309faafc7b83175
2017-10-19 01:02:05 +03:00
'protobuf/LayerScopePacket.pb.cc',
'wr/WebRenderTextureHost.cpp',
]
DEFINES['GOOGLE_PROTOBUF_NO_RTTI'] = True
Bug 1385461 - Upgrade to the latest version of the protobuf library. r=dimi,fitzgen,glandium,mattwoodrow,mossop The tarball that was imported is the 3.4.1 release: https://github.com/google/protobuf/releases/tag/v3.4.1 https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz This drops all of the customizations that are no longer needed, which includes a few issues that were fixed upstream: - r512.patch from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/r512.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/io/zero_copy_stream_impl.cc#L43 - vs2013.patch, also from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/vs2013.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/wire_format_lite_inl.h#L39 - sparc64 fixes in m-c-changes.patch from bug 1275204: https://hg.mozilla.org/integration/mozilla-inbound/rev/21d692e82582 https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/stubs/platform_macros.h#L68 The LOGLEVEL_ERROR hack in m-c-changes.patch from bug 1024774 and bug 1320179 was replaced by a NOGDI define in moz.build as suggested by upstream: https://github.com/google/protobuf/pull/3745/files#r144915445 The other customizations that were dropped came from bug 1024774. The patch for OpenBSD/32-bit will likely be fixed upstream in a future release: https://github.com/google/protobuf/pull/3747#issuecomment-336581244 Upgrading the protobuf library also required re-generating all of the existing .pb.h and pb.cc files (they are neither forward nor backward-compatible) and making adjustments to the build config to make it compile (and silence warnings). text_format.cc can now be compiled as part of UNIFIED_SOURCES. MozReview-Commit-ID: 7F2IqFmwQnN --HG-- extra : rebase_source : b907a28a8063ecd82bb38530d309faafc7b83175
2017-10-19 01:02:05 +03:00
DEFINES['GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER'] = True
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
SOURCES += [
'basic/MacIOSurfaceTextureHostBasic.cpp',
'opengl/MacIOSurfaceTextureClientOGL.cpp',
'opengl/MacIOSurfaceTextureHostOGL.cpp',
]
IPDL_SOURCES += [
'ipc/LayersMessages.ipdlh',
'ipc/LayersSurfaces.ipdlh',
'ipc/PAPZ.ipdl',
'ipc/PAPZCTreeManager.ipdl',
'ipc/PAPZInputBridge.ipdl',
'ipc/PCompositorBridge.ipdl',
'ipc/PCompositorManager.ipdl',
'ipc/PImageBridge.ipdl',
'ipc/PLayerTransaction.ipdl',
'ipc/PTexture.ipdl',
'ipc/PUiCompositorController.ipdl',
'ipc/PVideoBridge.ipdl',
'ipc/PWebRenderBridge.ipdl',
'ipc/WebRenderMessages.ipdlh',
]
include('/ipc/chromium/chromium-config.mozbuild')
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
GENERATED_FILES = [
'CompositorD3D11Shaders.h',
'MLGShaders.h',
]
d3d11_shaders = GENERATED_FILES['CompositorD3D11Shaders.h']
d3d11_shaders.script = 'd3d11/genshaders.py'
d3d11_shaders.inputs = ['d3d11/shaders.manifest']
mlg_shaders = GENERATED_FILES['MLGShaders.h']
mlg_shaders.script = 'd3d11/genshaders.py'
mlg_shaders.inputs = ['d3d11/mlgshaders/shaders.manifest']
LOCAL_INCLUDES += [
'/docshell/base', # for nsDocShell.h
'/layout/base', # for TouchManager.h
'/layout/generic', # for nsTextFrame.h
'/media/libyuv/libyuv/include', # for libyuv.h
]
FINAL_LIBRARY = 'xul'
if CONFIG['MOZ_DEBUG']:
DEFINES['D3D_DEBUG_INFO'] = True
if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True
if CONFIG['ENABLE_TESTS']:
DIRS += ['apz/test/gtest']
Bug 1014691 - Move APZ mochitests to gfx/layers/apz/test/mochitest. r=kats --HG-- rename : gfx/layers/apz/test/apz_test_native_event_utils.js => gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js rename : gfx/layers/apz/test/apz_test_utils.js => gfx/layers/apz/test/mochitest/apz_test_utils.js rename : gfx/layers/apz/test/chrome.ini => gfx/layers/apz/test/mochitest/chrome.ini rename : gfx/layers/apz/test/helper_basic_pan.html => gfx/layers/apz/test/mochitest/helper_basic_pan.html rename : gfx/layers/apz/test/helper_bug1151663.html => gfx/layers/apz/test/mochitest/helper_bug1151663.html rename : gfx/layers/apz/test/helper_bug982141.html => gfx/layers/apz/test/mochitest/helper_bug982141.html rename : gfx/layers/apz/test/helper_div_pan.html => gfx/layers/apz/test/mochitest/helper_div_pan.html rename : gfx/layers/apz/test/helper_iframe1.html => gfx/layers/apz/test/mochitest/helper_iframe1.html rename : gfx/layers/apz/test/helper_iframe2.html => gfx/layers/apz/test/mochitest/helper_iframe2.html rename : gfx/layers/apz/test/helper_iframe_pan.html => gfx/layers/apz/test/mochitest/helper_iframe_pan.html rename : gfx/layers/apz/test/helper_subframe_style.css => gfx/layers/apz/test/mochitest/helper_subframe_style.css rename : gfx/layers/apz/test/mochitest.ini => gfx/layers/apz/test/mochitest/mochitest.ini rename : gfx/layers/apz/test/test_basic_pan.html => gfx/layers/apz/test/mochitest/test_basic_pan.html rename : gfx/layers/apz/test/test_bug1151663.html => gfx/layers/apz/test/mochitest/test_bug1151663.html rename : gfx/layers/apz/test/test_bug1151667.html => gfx/layers/apz/test/mochitest/test_bug1151667.html rename : gfx/layers/apz/test/test_bug982141.html => gfx/layers/apz/test/mochitest/test_bug982141.html rename : gfx/layers/apz/test/test_layerization.html => gfx/layers/apz/test/mochitest/test_layerization.html rename : gfx/layers/apz/test/test_scroll_inactive_flattened_frame.html => gfx/layers/apz/test/mochitest/test_scroll_inactive_flattened_frame.html rename : gfx/layers/apz/test/test_smoothness.html => gfx/layers/apz/test/mochitest/test_smoothness.html rename : gfx/layers/apz/test/test_wheel_scroll.html => gfx/layers/apz/test/mochitest/test_wheel_scroll.html rename : gfx/layers/apz/test/test_wheel_transactions.html => gfx/layers/apz/test/mochitest/test_wheel_transactions.html extra : source : da98c4962d299e488ff456a35ec642708f6c8c49
2015-09-17 02:26:04 +03:00
MOCHITEST_MANIFESTS += ['apz/test/mochitest/mochitest.ini']
MOCHITEST_CHROME_MANIFESTS += ['apz/test/mochitest/chrome.ini']
CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CXXFLAGS += CONFIG['TK_CFLAGS']
LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
CXXFLAGS += ['-Wno-error=shadow']
Bug 1385461 - Upgrade to the latest version of the protobuf library. r=dimi,fitzgen,glandium,mattwoodrow,mossop The tarball that was imported is the 3.4.1 release: https://github.com/google/protobuf/releases/tag/v3.4.1 https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz This drops all of the customizations that are no longer needed, which includes a few issues that were fixed upstream: - r512.patch from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/r512.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/io/zero_copy_stream_impl.cc#L43 - vs2013.patch, also from bug 892856: https://searchfox.org/mozilla-central/rev/bab9dbe9c4ef71f71fb07e53b701fb2dfde277d9/toolkit/components/protobuf/vs2013.patch https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/wire_format_lite_inl.h#L39 - sparc64 fixes in m-c-changes.patch from bug 1275204: https://hg.mozilla.org/integration/mozilla-inbound/rev/21d692e82582 https://github.com/google/protobuf/blob/b04e5cba356212e4e8c66c61bbe0c3a20537c5b9/src/google/protobuf/stubs/platform_macros.h#L68 The LOGLEVEL_ERROR hack in m-c-changes.patch from bug 1024774 and bug 1320179 was replaced by a NOGDI define in moz.build as suggested by upstream: https://github.com/google/protobuf/pull/3745/files#r144915445 The other customizations that were dropped came from bug 1024774. The patch for OpenBSD/32-bit will likely be fixed upstream in a future release: https://github.com/google/protobuf/pull/3747#issuecomment-336581244 Upgrading the protobuf library also required re-generating all of the existing .pb.h and pb.cc files (they are neither forward nor backward-compatible) and making adjustments to the build config to make it compile (and silence warnings). text_format.cc can now be compiled as part of UNIFIED_SOURCES. MozReview-Commit-ID: 7F2IqFmwQnN --HG-- extra : rebase_source : b907a28a8063ecd82bb38530d309faafc7b83175
2017-10-19 01:02:05 +03:00
# Suppress warnings in third-party code.
CXXFLAGS += [
'-Wno-maybe-uninitialized'
]
if CONFIG['MOZ_ENABLE_SKIA']:
UNIFIED_SOURCES += [
'composite/PaintCounter.cpp',
]
if CONFIG['FUZZING'] and CONFIG['FUZZING_INTERFACES']:
TEST_DIRS += [
'ipc/fuzztest'
]
# Add libFuzzer configuration directives
include('/tools/fuzzing/libfuzzer-config.mozbuild')