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