diff options
author | apatrick@google.com <apatrick@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-24 19:34:24 +0000 |
---|---|---|
committer | apatrick@google.com <apatrick@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-24 19:34:24 +0000 |
commit | 97632e2039e3ec0b9342f5e7c074bf631c738a9f (patch) | |
tree | 71e51bad650961671a0aa96b433403fc5a8ff544 /gpu/command_buffer/service/command_buffer_service.h | |
parent | d4edbe5e406c5773d66d65214b963ed474b34cf4 (diff) | |
download | chromium_src-97632e2039e3ec0b9342f5e7c074bf631c738a9f.zip chromium_src-97632e2039e3ec0b9342f5e7c074bf631c738a9f.tar.gz chromium_src-97632e2039e3ec0b9342f5e7c074bf631c738a9f.tar.bz2 |
Branched gpu process and command buffer code into Chrome tree. Fixed up paths and other minor changes to make it work in the Chrome tree. Will remove copy from O3D tree shortly. Only works in Windows currently.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/436017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32952 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/command_buffer_service.h')
-rw-r--r-- | gpu/command_buffer/service/command_buffer_service.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/command_buffer_service.h b/gpu/command_buffer/service/command_buffer_service.h new file mode 100644 index 0000000..d6da953 --- /dev/null +++ b/gpu/command_buffer/service/command_buffer_service.h @@ -0,0 +1,93 @@ +// Copyright (c) 2006-2008 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_COMMAND_BUFFER_SERVICE_COMMAND_BUFFER_H_ +#define GPU_COMMAND_BUFFER_SERVICE_COMMAND_BUFFER_H_ + +#include <set> +#include <vector> + +#include "base/linked_ptr.h" +#include "base/scoped_ptr.h" +#include "base/shared_memory.h" +#include "base/task.h" +#include "gpu/command_buffer/common/command_buffer.h" +#include "gpu/np_utils/default_np_object.h" +#include "gpu/np_utils/np_dispatcher.h" + +namespace command_buffer { + +// An NPObject that implements a shared memory command buffer and a synchronous +// API to manage the put and get pointers. +class CommandBufferService : public CommandBuffer { + public: + CommandBufferService(); + virtual ~CommandBufferService(); + + // Overrides CommandBuffer. + virtual bool Initialize(::base::SharedMemory* ring_buffer); + + // Overrides CommandBuffer. + virtual ::base::SharedMemory* GetRingBuffer(); + + virtual int32 GetSize(); + + // Overrides CommandBuffer. + virtual int32 SyncOffsets(int32 put_offset); + + // Overrides CommandBuffer. + virtual int32 GetGetOffset(); + + // Overrides CommandBuffer. + virtual void SetGetOffset(int32 get_offset); + + // Overrides CommandBuffer. + virtual int32 GetPutOffset(); + + // Overrides CommandBuffer. + virtual void SetPutOffsetChangeCallback(Callback0::Type* callback); + + // Overrides CommandBuffer. + virtual int32 CreateTransferBuffer(size_t size); + + // Overrides CommandBuffer. + virtual void DestroyTransferBuffer(int32 id); + + // Overrides CommandBuffer. + virtual ::base::SharedMemory* GetTransferBuffer(int32 handle); + + // Overrides CommandBuffer. + virtual int32 GetToken(); + + // Overrides CommandBuffer. + virtual void SetToken(int32 token); + + // Overrides CommandBuffer. + virtual int32 ResetParseError(); + + // Overrides CommandBuffer. + virtual void SetParseError(int32 parse_error); + + // Overrides CommandBuffer. + virtual bool GetErrorStatus(); + + // Overrides CommandBuffer. + virtual void RaiseErrorStatus(); + + private: + scoped_ptr< ::base::SharedMemory> ring_buffer_; + int32 size_; + int32 get_offset_; + int32 put_offset_; + scoped_ptr<Callback0::Type> put_offset_change_callback_; + std::vector<linked_ptr< ::base::SharedMemory> > registered_objects_; + std::set<int32> unused_registered_object_elements_; + int32 token_; + int32 parse_error_; + bool error_status_; +}; + +} // namespace command_buffer + +#endif // GPU_COMMAND_BUFFER_SERVICE_COMMAND_BUFFER_H_ |