1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "mojo/services/gles2/mojo_buffer_backing.h" 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/logging.h" 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace mojo { 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace gles2 { 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochMojoBufferBacking::MojoBufferBacking(mojo::ScopedSharedBufferHandle handle, 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void* memory, 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch size_t size) 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch : handle_(handle.Pass()), memory_(memory), size_(size) {} 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochMojoBufferBacking::~MojoBufferBacking() { mojo::UnmapBuffer(memory_); } 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// static 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochscoped_ptr<gpu::BufferBacking> MojoBufferBacking::Create( 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch mojo::ScopedSharedBufferHandle handle, 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch size_t size) { 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void* memory = NULL; 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch MojoResult result = mojo::MapBuffer( 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch handle.get(), 0, size, &memory, MOJO_MAP_BUFFER_FLAG_NONE); 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (result != MOJO_RESULT_OK) 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return scoped_ptr<BufferBacking>(); 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DCHECK(memory); 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return scoped_ptr<BufferBacking>( 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch new MojoBufferBacking(handle.Pass(), memory, size)); 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid* MojoBufferBacking::GetMemory() const { return memory_; } 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochsize_t MojoBufferBacking::GetSize() const { return size_; } 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace gles2 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace mojo 37