Index: gpu/command_buffer/service/mailbox_manager.h |
diff --git a/gpu/command_buffer/service/mailbox_manager.h b/gpu/command_buffer/service/mailbox_manager.h |
index a00b9652bfa1f8f11464d2a9125c2e51722dc5c0..8b53ce4c14da0a3074f173a6f28983d1116de46f 100644 |
--- a/gpu/command_buffer/service/mailbox_manager.h |
+++ b/gpu/command_buffer/service/mailbox_manager.h |
@@ -1,85 +1,48 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Copyright 2014 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_MAILBOX_MANAGER_H_ |
#define GPU_COMMAND_BUFFER_SERVICE_MAILBOX_MANAGER_H_ |
-#include <functional> |
-#include <map> |
- |
-#include "base/memory/linked_ptr.h" |
#include "base/memory/ref_counted.h" |
-#include "gpu/command_buffer/common/constants.h" |
#include "gpu/command_buffer/common/mailbox.h" |
#include "gpu/gpu_export.h" |
-typedef signed char GLbyte; |
- |
namespace gpu { |
namespace gles2 { |
-class MailboxSynchronizer; |
class Texture; |
-class TextureManager; |
// Manages resources scoped beyond the context or context group level. |
class GPU_EXPORT MailboxManager : public base::RefCounted<MailboxManager> { |
public: |
- MailboxManager(); |
- |
// Look up the texture definition from the named mailbox. |
- Texture* ConsumeTexture(unsigned target, const Mailbox& mailbox); |
+ virtual Texture* ConsumeTexture(const Mailbox& mailbox) = 0; |
// Put the texture into the named mailbox. |
- void ProduceTexture(unsigned target, |
- const Mailbox& mailbox, |
- Texture* texture); |
+ virtual void ProduceTexture(const Mailbox& mailbox, Texture* texture) = 0; |
- // Returns whether this manager synchronizes with other instances. |
- bool UsesSync() { return sync_ != NULL; } |
+ // If |true| then Pull/PushTextureUpdates() needs to be called. |
+ virtual bool UsesSync() = 0; |
- // Used with the MailboxSynchronizer to push/pull texture state to/from |
- // other manager instances. |
- void PushTextureUpdates(uint32 sync_point); |
- void PullTextureUpdates(uint32 sync_point); |
+ // Used to synchronize texture state across share groups. |
+ virtual void PushTextureUpdates(uint32 sync_point) = 0; |
+ virtual void PullTextureUpdates(uint32 sync_point) = 0; |
// Destroy any mailbox that reference the given texture. |
- void TextureDeleted(Texture* texture); |
+ virtual void TextureDeleted(Texture* texture) = 0; |
+ |
+ protected: |
+ MailboxManager() {} |
+ virtual ~MailboxManager() {} |
private: |
friend class base::RefCounted<MailboxManager>; |
- friend class MailboxSynchronizer; |
- |
- ~MailboxManager(); |
- |
- struct TargetName { |
- TargetName(unsigned target, const Mailbox& mailbox); |
- unsigned target; |
- Mailbox mailbox; |
- }; |
- void InsertTexture(TargetName target_name, Texture* texture); |
- |
- static bool TargetNameLess(const TargetName& lhs, const TargetName& rhs); |
- |
- // This is a bidirectional map between mailbox and textures. We can have |
- // multiple mailboxes per texture, but one texture per mailbox. We keep an |
- // iterator in the MailboxToTextureMap to be able to manage changes to |
- // the TextureToMailboxMap efficiently. |
- typedef std::multimap<Texture*, TargetName> TextureToMailboxMap; |
- typedef std::map<TargetName, |
- TextureToMailboxMap::iterator, |
- std::pointer_to_binary_function<const TargetName&, |
- const TargetName&, |
- bool> > MailboxToTextureMap; |
- |
- MailboxToTextureMap mailbox_to_textures_; |
- TextureToMailboxMap textures_to_mailboxes_; |
- |
- MailboxSynchronizer* sync_; |
DISALLOW_COPY_AND_ASSIGN(MailboxManager); |
}; |
+ |
} // namespage gles2 |
} // namespace gpu |