// Copyright (c) 2010 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. #ifndef GPU_PGL_COMMAND_BUFFER_PEPPER_H #define GPU_PGL_COMMAND_BUFFER_PEPPER_H #include "gpu/command_buffer/common/command_buffer.h" #include "third_party/npapi/bindings/npapi.h" #include "third_party/npapi/bindings/npruntime.h" #include "third_party/npapi/bindings/npapi_extensions.h" #ifdef __native_client__ #include "native_client/src/third_party/npapi/files/include/npupp.h" #else #include "third_party/npapi/bindings/nphostapi.h" #endif // __native_client__ // A CommandBuffer proxy implementation that uses the Pepper API to access // the command buffer. class CommandBufferPepper : public gpu::CommandBuffer { public: CommandBufferPepper(NPP npp, NPDevice* device, NPDeviceContext3D* device_context); virtual ~CommandBufferPepper(); // CommandBuffer implementation. virtual bool Initialize(int32 size); virtual gpu::Buffer GetRingBuffer(); virtual State GetState(); virtual State Flush(int32 put_offset); virtual void SetGetOffset(int32 get_offset); virtual int32 CreateTransferBuffer(size_t size); virtual void DestroyTransferBuffer(int32 id); virtual gpu::Buffer GetTransferBuffer(int32 handle); virtual void SetToken(int32 token); virtual void SetParseError(gpu::error::Error error); private: CommandBuffer::State ConvertState(); NPP npp_; NPDevice* device_; NPDeviceContext3D* context_; }; #endif // GPU_PGL_COMMAND_BUFFER_PEPPER_H