14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 24ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// found in the LICENSE file. 44ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 54ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_ 64ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_ 74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 84ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "content/common/gpu/client/gpu_memory_buffer_impl.h" 94ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 104ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochstruct ANativeWindow; 114ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 124ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochnamespace content { 134ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Implementation of GPU memory buffer based on SurfaceTextures. 154ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochclass GpuMemoryBufferImplSurfaceTexture : public GpuMemoryBufferImpl { 164ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch public: 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static scoped_ptr<GpuMemoryBufferImpl> CreateFromHandle( 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::GpuMemoryBufferHandle& handle, 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Size& size, 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned internalformat, 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DestructionCallback& callback); 224ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 234ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch static bool IsFormatSupported(unsigned internalformat); 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static bool IsUsageSupported(unsigned usage); 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static bool IsConfigurationSupported(unsigned internalformat, unsigned usage); 264ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch static int WindowFormat(unsigned internalformat); 274ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 284ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Overridden from gfx::GpuMemoryBuffer: 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void* Map() OVERRIDE; 304ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual void Unmap() OVERRIDE; 314ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual gfx::GpuMemoryBufferHandle GetHandle() const OVERRIDE; 324ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual uint32 GetStride() const OVERRIDE; 334ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 344ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch private: 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GpuMemoryBufferImplSurfaceTexture( 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Size& size, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned internalformat, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DestructionCallback& callback, 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::SurfaceTextureId& surface_texture_id, 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ANativeWindow* native_window); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~GpuMemoryBufferImplSurfaceTexture(); 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 434ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch gfx::SurfaceTextureId surface_texture_id_; 444ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch ANativeWindow* native_window_; 454ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch size_t stride_; 464ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 474ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplSurfaceTexture); 484ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}; 494ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 504ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch} // namespace content 514ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 524ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#endif // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SURFACE_TEXTURE_H_ 53