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