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