// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_OZONE_PUBLIC_SURFACE_FACTORY_OZONE_H_ #define UI_OZONE_PUBLIC_SURFACE_FACTORY_OZONE_H_ #include <stdint.h> #include <memory> #include <optional> #include <vector> #include "base/component_export.h" #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" #include "base/native_library.h" #include "gpu/vulkan/buildflags.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/native_pixmap.h" #include "ui/gfx/native_widget_types.h" #include "ui/gfx/overlay_transform.h" #include "ui/gl/gl_implementation.h" #include "ui/ozone/public/drm_modifiers_filter.h" #include "ui/ozone/public/gl_ozone.h" #if BUILDFLAG(ENABLE_VULKAN) #include "gpu/vulkan/vulkan_implementation.h" #endif namespace gfx { class NativePixmap; } namespace gpu { class VulkanDeviceQueue; } namespace ui { class SurfaceOzoneCanvas; class OverlaySurface; class PlatformWindowSurface; // The Ozone interface allows external implementations to hook into Chromium to // provide a system specific implementation. The Ozone interface supports two // drawing modes: 1) accelerated drawing using GL and 2) software drawing // through Skia. // // If you want to paint on a window with ozone, you need to create a GLSurface // or SurfaceOzoneCanvas for that window. The platform can support software, GL, // or both for painting on the window. The following functionality is specific // to the drawing mode and may not have any meaningful implementation in the // other mode. An implementation must provide functionality for at least one // mode. // // 1) Accelerated Drawing (GL path): // // The following functions are specific to GL: // - GetAllowedGLImplementations // - GetGLOzone (along with the associated GLOzone) // // 2) Software Drawing (Skia): // // The following function is specific to the software path: // - CreateCanvasForWidget // // The accelerated path can optionally provide support for the software drawing // path. // // The remaining functions are not covered since they are needed in both drawing // modes (See comments below for descriptions). class COMPONENT_EXPORT(OZONE_BASE) SurfaceFactoryOzone { … }; } // namespace ui #endif // UI_OZONE_PUBLIC_SURFACE_FACTORY_OZONE_H_