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