1 // Copyright 2020 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 COMPONENTS_VIZ_SERVICE_DISPLAY_VIZ_PIXEL_TEST_H_
6 #define COMPONENTS_VIZ_SERVICE_DISPLAY_VIZ_PIXEL_TEST_H_
7 
8 #include <vector>
9 
10 #include "cc/test/pixel_test.h"
11 #include "components/viz/test/test_types.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 
14 namespace viz {
15 
16 // Viz pixel test base class. When SetUp() is called the appropriate
17 // DirectRenderer implementation is initialized based on RendererType
18 // parameter passed to the constructor.
19 //
20 // Use VizPixelTestWithParam as a pareterized test base class to run the same
21 // test with different renderers/graphics backends. If a test requires multiple
22 // parameters then VizPixelTest is the appropriate base class. One of the
23 // parameters would be passed to the VizPixelTest constructor to select the
24 // RendererType.
25 class VizPixelTest : public cc::PixelTest {
26  public:
27   explicit VizPixelTest(RendererType type);
28 
29   // cc::PixelTest implementation.
30   void SetUp() override;
31 
renderer_type()32   RendererType renderer_type() const { return renderer_type_; }
33 
renderer_str()34   const char* renderer_str() {
35     switch (renderer_type_) {
36       case RendererType::kSoftware:
37         return "software";
38       case RendererType::kGL:
39         return "gl";
40       case RendererType::kSkiaGL:
41       case RendererType::kSkiaVk:
42         return "skia";
43       case RendererType::kSkiaDawn:
44         return "dawn";
45     }
46   }
47 
is_software_renderer()48   bool is_software_renderer() const {
49     return renderer_type_ == RendererType::kSoftware;
50   }
51 
is_gl_renderer()52   bool is_gl_renderer() const { return renderer_type_ == RendererType::kGL; }
53 
54  protected:
55   static GraphicsBackend RenderTypeToBackend(RendererType renderer_type);
56 
57   virtual gfx::SurfaceOrigin GetSurfaceOrigin() const;
58 
59  private:
60   const RendererType renderer_type_;
61 };
62 
63 // Parameterized test helper with a single RendererType parameter.
64 class VizPixelTestWithParam : public VizPixelTest,
65                               public testing::WithParamInterface<RendererType> {
66  public:
67   VizPixelTestWithParam();
68 };
69 
70 }  // namespace viz
71 
72 #endif  // COMPONENTS_VIZ_SERVICE_DISPLAY_VIZ_PIXEL_TEST_H_
73