// 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.

#include "components/viz/service/display/viz_pixel_test.h"

#include "build/build_config.h"
#include "ui/base/ui_base_features.h"

namespace viz {

// static
bool VizPixelTest::IsANGLEMetal() {
  return gl::GetGLImplementationParts() ==
         gl::GLImplementationParts(gl::ANGLEImplementation::kMetal);
}

// static
cc::PixelTest::GraphicsBackend VizPixelTest::RenderTypeToBackend(
    RendererType renderer_type) {
  if (renderer_type == RendererType::kSkiaVk) {
    return GraphicsBackend::kSkiaVulkan;
  } else if (renderer_type == RendererType::kSkiaGraphiteDawn) {
    return GraphicsBackend::kSkiaGraphiteDawn;
  }

  return GraphicsBackend::kDefault;
}

VizPixelTest::VizPixelTest(RendererType type)
    : PixelTest(RenderTypeToBackend(type)), renderer_type_(type) {}

void VizPixelTest::SetUp() {
  switch (renderer_type_) {
    case RendererType::kSoftware:
      SetUpSoftwareRenderer();
      break;
    case RendererType::kSkiaGL:
    case RendererType::kSkiaVk:
    case RendererType::kSkiaGraphiteDawn:
      SetUpSkiaRenderer(GetSurfaceOrigin());
      break;
  }
}

gfx::SurfaceOrigin VizPixelTest::GetSurfaceOrigin() const {
  return gfx::SurfaceOrigin::kBottomLeft;
}

VizPixelTestWithParam::VizPixelTestWithParam() : VizPixelTest(GetParam()) {}

}  // namespace viz
