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