普通文本  |  49行  |  1.23 KB

// Copyright 2013 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/gles2/gles2_impl.h"

#include "gpu/command_buffer/client/gles2_lib.h"
#include "mojo/public/gles2/gles2_private.h"

namespace mojo {
namespace gles2 {

GLES2Impl::GLES2Impl() {
}

GLES2Impl::~GLES2Impl() {
}

void GLES2Impl::Init() {
  GLES2Private::Init(new GLES2Impl());
}

void GLES2Impl::Initialize() {
  ::gles2::Initialize();
}

void GLES2Impl::Terminate() {
  ::gles2::Terminate();
}

void GLES2Impl::MakeCurrent(uint64_t encoded) {
  // Ack, Hans! It's the giant hack.
  // TODO(abarth): Replace this hack with something more disciplined. Most
  // likley, we should receive a MojoHandle that we use to wire up the
  // client side of an out-of-process command buffer. Given that we're
  // still in-process, we just reinterpret_cast the value into a GL interface.
  gpu::gles2::GLES2Interface* gl_interface =
      reinterpret_cast<gpu::gles2::GLES2Interface*>(
          static_cast<uintptr_t>(encoded));
  ::gles2::SetGLContext(gl_interface);
}

void GLES2Impl::SwapBuffers() {
  ::gles2::GetGLContext()->SwapBuffers();
}

}  // namespace gles2
}  // namespace mojo