// 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/services/gles2/gles2_impl.h" #include "base/bind.h" #include "gpu/command_buffer/client/gl_in_process_context.h" #include "gpu/command_buffer/client/gles2_implementation.h" namespace mojo { namespace services { GLES2Impl::GLES2Impl(ScopedMessagePipeHandle client) : client_(client.Pass()) { client_.SetPeer(this); } GLES2Impl::~GLES2Impl() { } void GLES2Impl::Destroy() { gl_context_.reset(); } void GLES2Impl::CreateContext(gfx::AcceleratedWidget widget, const gfx::Size& size) { gpu::GLInProcessContextAttribs attribs; gl_context_.reset(gpu::GLInProcessContext::CreateContext( false, widget, size, false, attribs, gfx::PreferDiscreteGpu)); gl_context_->SetContextLostCallback(base::Bind( &GLES2Impl::OnGLContextLost, base::Unretained(this))); gpu::gles2::GLES2Interface* gl = gl_context_->GetImplementation(); uint64_t encoded_gl = static_cast<uint64_t>(reinterpret_cast<uintptr_t>(gl)); client_->DidCreateContext(encoded_gl, size.width(), size.height()); } void GLES2Impl::OnGLContextLost() { client_->ContextLost(); } } // namespace services } // namespace mojo