Index: cc/CCResourceProvider.cpp |
diff --git a/cc/CCResourceProvider.cpp b/cc/CCResourceProvider.cpp |
index 4c5876938b4f32c0ef7e1e2f69b862a9bc331b9b..9e48e3511ef8827c8814eb5b40f9436076b83d96 100644 |
--- a/cc/CCResourceProvider.cpp |
+++ b/cc/CCResourceProvider.cpp |
@@ -19,7 +19,6 @@ |
#include "IntRect.h" |
#include "LayerTextureSubImage.h" |
#include "ThrottledTextureUploader.h" |
-#include "UnthrottledTextureUploader.h" |
#include <public/WebGraphicsContext3D.h> |
#include <wtf/HashSet.h> |
@@ -27,6 +26,15 @@ using WebKit::WebGraphicsContext3D; |
namespace cc { |
+class SoftwareTextureUploader : public TextureUploader { |
nduca
2012/09/20 18:34:17
One class per file, please.
piman
2012/09/20 18:48:42
FYI, in chrome code having multiple private classe
|
+public: |
+ virtual bool isBusy() OVERRIDE { return false; } |
+ virtual double estimatedTexturesPerSecond() { return std::numeric_limits<double>::max(); } |
+ virtual void beginUploads() OVERRIDE { } |
+ virtual void endUploads() OVERRIDE { } |
+ virtual void uploadTexture(CCResourceProvider* resourceProvider, Parameters upload) OVERRIDE { upload.texture->updateRect(resourceProvider, upload.sourceRect, upload.destOffset); } |
+}; |
+ |
static GC3Denum textureToStorageFormat(GC3Denum textureFormat) |
{ |
GC3Denum storageFormat = Extensions3D::RGBA8_OES; |
@@ -49,10 +57,10 @@ static bool isTextureFormatSupportedForStorage(GC3Denum format) |
return (format == GraphicsContext3D::RGBA || format == Extensions3D::BGRA_EXT); |
} |
-PassOwnPtr<CCResourceProvider> CCResourceProvider::create(CCGraphicsContext* context, TextureUploaderOption option) |
+PassOwnPtr<CCResourceProvider> CCResourceProvider::create(CCGraphicsContext* context) |
{ |
OwnPtr<CCResourceProvider> resourceProvider(adoptPtr(new CCResourceProvider(context))); |
- if (!resourceProvider->initialize(option)) |
+ if (!resourceProvider->initialize()) |
return nullptr; |
return resourceProvider.release(); |
} |
@@ -389,13 +397,13 @@ CCResourceProvider::CCResourceProvider(CCGraphicsContext* context) |
{ |
} |
-bool CCResourceProvider::initialize(TextureUploaderOption textureUploaderOption) |
+bool CCResourceProvider::initialize() |
{ |
ASSERT(CCProxy::isImplThread()); |
WebGraphicsContext3D* context3d = m_context->context3D(); |
if (!context3d) { |
m_maxTextureSize = INT_MAX; |
- m_textureUploader = UnthrottledTextureUploader::create(); |
+ m_textureUploader = adoptPtr(new SoftwareTextureUploader); |
// FIXME: Implement this path for software compositing. |
return false; |
@@ -424,10 +432,7 @@ bool CCResourceProvider::initialize(TextureUploaderOption textureUploaderOption) |
m_texSubImage = adoptPtr(new LayerTextureSubImage(useMapSub)); |
m_textureCopier = AcceleratedTextureCopier::create(context3d, useBindUniform); |
- if (textureUploaderOption == ThrottledUploader) |
- m_textureUploader = ThrottledTextureUploader::create(context3d); |
- else |
- m_textureUploader = UnthrottledTextureUploader::create(); |
+ m_textureUploader = ThrottledTextureUploader::create(context3d); |
GLC(context3d, context3d->getIntegerv(GraphicsContext3D::MAX_TEXTURE_SIZE, &m_maxTextureSize)); |
return true; |
} |