// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_GFX_CA_LAYER_PARAMS_H_ #define UI_GFX_CA_LAYER_PARAMS_H_ #include "build/build_config.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/gfx_export.h" #if defined(OS_MAC) #include "ui/gfx/mac/io_surface.h" #endif namespace gfx { // The parameters required to add a composited frame to a CALayer. This // is used only on macOS. struct GFX_EXPORT CALayerParams { CALayerParams(); CALayerParams(CALayerParams&& params); CALayerParams(const CALayerParams& params); CALayerParams& operator=(CALayerParams&& params); CALayerParams& operator=(const CALayerParams& params); ~CALayerParams(); // The |is_empty| flag is used to short-circuit code to handle CALayerParams // on non-macOS platforms. bool is_empty = true; // Can be used to instantiate a CALayerTreeHost in the browser process, which // will display a CALayerTree rooted in the GPU process. This is non-zero when // using remote CoreAnimation. uint32_t ca_context_id = 0; // Used to set the contents of a CALayer in the browser to an IOSurface that // is specified by the GPU process. This is non-null iff |ca_context_id| is // zero. #if defined(OS_MAC) gfx::ScopedRefCountedIOSurfaceMachPort io_surface_mach_port; #endif // The geometry of the frame. gfx::Size pixel_size; float scale_factor = 1.f; }; } // namespace gfx #endif // UI_GFX_CA_LAYER_PARAMS_H_