| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_OUTPUT_SURFACE_UNIFIED_H_ |
| #define COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_OUTPUT_SURFACE_UNIFIED_H_ |
| |
| #include "components/viz/service/display/output_surface.h" |
| |
| namespace viz { |
| |
| // An OutputSurface implementation for the Chrome OS unified desktop display. |
| // The unified display is a fake display that spans across multiple physical |
| // displays. The Display/OutputSurface for the unified display exist only to |
| // issue begin frames and doesn't need to do any drawing work. This class is |
| // essentially a stub implementation. |
| // |
| // OutputSurfaceUnified will end up with a corresponding NullRenderer. While |
| // Chrome OS uses GL rendering to draw it doesn't matter what renderer is |
| // created for the unified display because it's never used to draw. Using |
| // NullRenderer avoids the need to allocate a GL context and command buffer, |
| // which have significant memory overhead. |
| class OutputSurfaceUnified : public OutputSurface { |
| public: |
| // TODO(kylechar): Add test that uses OutputSurfaceUnified. |
| OutputSurfaceUnified(); |
| |
| OutputSurfaceUnified(const OutputSurfaceUnified&) = delete; |
| OutputSurfaceUnified& operator=(const OutputSurfaceUnified&) = delete; |
| |
| ~OutputSurfaceUnified() override; |
| |
| // OutputSurface implementation. |
| void BindToClient(OutputSurfaceClient* client) override {} |
| void EnsureBackbuffer() override {} |
| void DiscardBackbuffer() override {} |
| void Reshape(const ReshapeParams& params) override {} |
| void SwapBuffers(OutputSurfaceFrame frame) override; |
| void SetUpdateVSyncParametersCallback( |
| UpdateVSyncParametersCallback callback) override {} |
| void SetDisplayTransformHint(gfx::OverlayTransform transform) override {} |
| gfx::OverlayTransform GetDisplayTransform() override; |
| }; |
| |
| } // namespace viz |
| |
| #endif // COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_OUTPUT_SURFACE_UNIFIED_H_ |