103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file.
403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/services/native_viewport/gpu_impl.h"
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "gpu/command_buffer/service/mailbox_manager.h"
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/services/gles2/command_buffer_impl.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/services/public/cpp/geometry/geometry_type_converters.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/gl/gl_share_group.h"
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace mojo {
1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)GpuImpl::GpuImpl(
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const scoped_refptr<gfx::GLShareGroup>& share_group,
1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const scoped_refptr<gpu::gles2::MailboxManager> mailbox_manager)
1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    : share_group_(share_group), mailbox_manager_(mailbox_manager) {
1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)GpuImpl::~GpuImpl() {
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void GpuImpl::CreateOnscreenGLES2Context(
2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    uint64_t native_viewport_id,
2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    SizePtr size,
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    InterfaceRequest<CommandBuffer> command_buffer_request) {
2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  gfx::AcceleratedWidget widget = bit_cast<gfx::AcceleratedWidget>(
2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      static_cast<uintptr_t>(native_viewport_id));
2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  BindToRequest(new CommandBufferImpl(widget,
3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                      size.To<gfx::Size>(),
3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                      share_group_.get(),
3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                      mailbox_manager_.get()),
3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                &command_buffer_request);
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void GpuImpl::CreateOffscreenGLES2Context(
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    InterfaceRequest<CommandBuffer> command_buffer_request) {
3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  BindToRequest(
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      new CommandBufferImpl(share_group_.get(), mailbox_manager_.get()),
4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      &command_buffer_request);
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace mojo
44