// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "flutter/shell/platform/android/android_surface.h"

#include <utility>

#include "flutter/shell/platform/android/android_surface_gl.h"
#include "flutter/shell/platform/android/android_surface_software.h"
#if SHELL_ENABLE_VULKAN
#include "flutter/shell/platform/android/android_surface_vulkan.h"
#endif  // SHELL_ENABLE_VULKAN

namespace flutter {

std::unique_ptr<AndroidSurface> AndroidSurface::Create(
    std::shared_ptr<AndroidContext> android_context) {
  std::unique_ptr<AndroidSurface> surface;
  switch (android_context->RenderingApi()) {
    case AndroidRenderingAPI::kSoftware:
      surface = std::make_unique<AndroidSurfaceSoftware>();
      break;
    case AndroidRenderingAPI::kOpenGLES:
      surface = std::make_unique<AndroidSurfaceGL>(android_context);
      break;
    case AndroidRenderingAPI::kVulkan:
#if SHELL_ENABLE_VULKAN
      surface = std::make_unique<AndroidSurfaceVulkan>();
#endif  // SHELL_ENABLE_VULKAN
      break;
  }
  FML_CHECK(surface);
  return surface->IsValid() ? std::move(surface) : nullptr;
  ;
}

AndroidSurface::~AndroidSurface() = default;

}  // namespace flutter
