| Index: cc/throttled_texture_uploader.h
|
| diff --git a/cc/throttled_texture_uploader.h b/cc/throttled_texture_uploader.h
|
| index 638cbb270ce9b24689d5095baf174ade4f4d1a13..f51740158d124129061bdd09542ad133a11a0ae0 100644
|
| --- a/cc/throttled_texture_uploader.h
|
| +++ b/cc/throttled_texture_uploader.h
|
| @@ -1,3 +1,76 @@
|
| // Copyright 2012 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 ThrottledTextureUploader_h
|
| +#define ThrottledTextureUploader_h
|
| +
|
| +#include "TextureUploader.h"
|
| +
|
| +#include "base/basictypes.h"
|
| +#include <deque>
|
| +#include <wtf/Deque.h>
|
| +
|
| +namespace WebKit {
|
| +class WebGraphicsContext3D;
|
| +}
|
| +
|
| +namespace cc {
|
| +
|
| +class ThrottledTextureUploader : public TextureUploader {
|
| +public:
|
| + static PassOwnPtr<ThrottledTextureUploader> create(WebKit::WebGraphicsContext3D* context)
|
| + {
|
| + return adoptPtr(new ThrottledTextureUploader(context));
|
| + }
|
| + virtual ~ThrottledTextureUploader();
|
| +
|
| + virtual size_t numBlockingUploads() OVERRIDE;
|
| + virtual void markPendingUploadsAsNonBlocking() OVERRIDE;
|
| + virtual double estimatedTexturesPerSecond() OVERRIDE;
|
| + virtual void uploadTexture(CCResourceProvider*, Parameters) OVERRIDE;
|
| +
|
| +private:
|
| + class Query {
|
| + public:
|
| + static PassOwnPtr<Query> create(WebKit::WebGraphicsContext3D* context) { return adoptPtr(new Query(context)); }
|
| +
|
| + virtual ~Query();
|
| +
|
| + void begin();
|
| + void end();
|
| + bool isPending();
|
| + void wait();
|
| + unsigned value();
|
| + size_t texturesUploaded();
|
| + void markAsNonBlocking();
|
| + bool isNonBlocking();
|
| +
|
| + private:
|
| + explicit Query(WebKit::WebGraphicsContext3D*);
|
| +
|
| + WebKit::WebGraphicsContext3D* m_context;
|
| + unsigned m_queryId;
|
| + unsigned m_value;
|
| + bool m_hasValue;
|
| + bool m_isNonBlocking;
|
| + };
|
| +
|
| + ThrottledTextureUploader(WebKit::WebGraphicsContext3D*);
|
| +
|
| + void beginQuery();
|
| + void endQuery();
|
| + void processQueries();
|
| +
|
| + WebKit::WebGraphicsContext3D* m_context;
|
| + Deque<OwnPtr<Query> > m_pendingQueries;
|
| + Deque<OwnPtr<Query> > m_availableQueries;
|
| + std::deque<double> m_texturesPerSecondHistory;
|
| + size_t m_numBlockingTextureUploads;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ThrottledTextureUploader);
|
| +};
|
| +
|
| +}
|
| +
|
| +#endif
|
|
|