1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CC_TEST_PIXEL_TEST_OUTPUT_SURFACE_H_
6 #define CC_TEST_PIXEL_TEST_OUTPUT_SURFACE_H_
7 
8 #include <memory>
9 
10 #include "base/memory/weak_ptr.h"
11 #include "components/viz/service/display/output_surface.h"
12 
13 namespace cc {
14 
15 class PixelTestOutputSurface : public viz::OutputSurface {
16  public:
17   explicit PixelTestOutputSurface(
18       scoped_refptr<viz::ContextProvider> context_provider,
19       gfx::SurfaceOrigin origin);
20   explicit PixelTestOutputSurface(
21       std::unique_ptr<viz::SoftwareOutputDevice> software_device);
22   ~PixelTestOutputSurface() override;
23 
24   // OutputSurface implementation.
25   void BindToClient(viz::OutputSurfaceClient* client) override;
26   void EnsureBackbuffer() override;
27   void DiscardBackbuffer() override;
28   void BindFramebuffer() override;
29   void Reshape(const gfx::Size& size,
30                float device_scale_factor,
31                const gfx::ColorSpace& color_space,
32                gfx::BufferFormat format,
33                bool use_stencil) override;
34   bool HasExternalStencilTest() const override;
35   void ApplyExternalStencil() override;
36   void SwapBuffers(viz::OutputSurfaceFrame frame) override;
37   bool IsDisplayedAsOverlayPlane() const override;
38   unsigned GetOverlayTextureId() const override;
39   uint32_t GetFramebufferCopyTextureFormat() override;
40   unsigned UpdateGpuFence() override;
41   void SetUpdateVSyncParametersCallback(
42       viz::UpdateVSyncParametersCallback callback) override;
SetDisplayTransformHint(gfx::OverlayTransform transform)43   void SetDisplayTransformHint(gfx::OverlayTransform transform) override {}
44   gfx::OverlayTransform GetDisplayTransform() override;
45 
set_has_external_stencil_test(bool has_test)46   void set_has_external_stencil_test(bool has_test) {
47     external_stencil_test_ = has_test;
48   }
49 
50  private:
51   void SwapBuffersCallback();
52 
53   bool external_stencil_test_ = false;
54   viz::OutputSurfaceClient* client_ = nullptr;
55   base::WeakPtrFactory<PixelTestOutputSurface> weak_ptr_factory_{this};
56 };
57 
58 }  // namespace cc
59 
60 #endif  // CC_TEST_PIXEL_TEST_OUTPUT_SURFACE_H_
61