// Copyright 2015 The Chromium 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 "mojo/skia/ganesh_framebuffer_surface.h"

#include <GLES2/gl2.h>

#include "base/logging.h"

namespace mojo {
namespace skia {

GaneshFramebufferSurface::GaneshFramebufferSurface(
    const GaneshContext::Scope& scope) {
  GLint samples = 0;
  glGetIntegerv(GL_SAMPLES, &samples);
  GLint stencil_bits = 0;
  glGetIntegerv(GL_STENCIL_BITS, &stencil_bits);
  GLint framebuffer_binding = 0;
  glGetIntegerv(GL_FRAMEBUFFER_BINDING, &framebuffer_binding);
  GLint viewport[4] = {0, 0, 0, 0};
  glGetIntegerv(GL_VIEWPORT, viewport);
  DCHECK(viewport[2] > 0);
  DCHECK(viewport[3] > 0);

  GrBackendRenderTargetDesc desc;
  desc.fWidth = viewport[2];
  desc.fHeight = viewport[3];
  desc.fConfig = kSkia8888_GrPixelConfig;
  desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
  desc.fSampleCnt = samples;
  desc.fStencilBits = stencil_bits;
  desc.fRenderTargetHandle = framebuffer_binding;

  surface_ = SkSurface::MakeFromBackendRenderTarget(scope.gr_context().get(),
                                                    desc, nullptr);
  DCHECK(surface_);
}

GaneshFramebufferSurface::~GaneshFramebufferSurface() {}

}  // namespace skia
}  // namespace mojo
