Diff
Modified: trunk/Source/WebCore/ChangeLog (115393 => 115394)
--- trunk/Source/WebCore/ChangeLog 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/ChangeLog 2012-04-27 01:24:04 UTC (rev 115394)
@@ -1,3 +1,49 @@
+2012-04-24 James Robinson <[email protected]>
+
+ [chromium] Use different CCDrawQuad types for textures vs IOSurfaces
+ https://bugs.webkit.org/show_bug.cgi?id=84811
+
+ Reviewed by Adrienne Walker.
+
+ IOSurface and texture backed layers share few properties (only the flipped bool), so it doesn't make a lot of
+ sense for them to use the same CCDrawQuad type for both. This splits IOSurfaces out to a dedicated quad type to
+ make it easier to understand which bits of state apply to each.
+
+ The logical next step after this is to split the layer type as well, but that will be awkward until bug 84808 is
+ resolved.
+
+ * WebCore.gypi:
+ * platform/graphics/chromium/LayerRendererChromium.cpp:
+ (WebCore::LayerRendererChromium::drawQuad):
+ (WebCore::LayerRendererChromium::drawTextureQuad):
+ (WebCore):
+ (WebCore::LayerRendererChromium::drawIOSurfaceQuad):
+ * platform/graphics/chromium/LayerRendererChromium.h:
+ (LayerRendererChromium):
+ * platform/graphics/chromium/cc/CCDrawQuad.cpp:
+ (WebCore::CCDrawQuad::toIOSurfaceDrawQuad):
+ (WebCore):
+ * platform/graphics/chromium/cc/CCDrawQuad.h:
+ (WebCore):
+ (CCDrawQuad):
+ * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp: Copied from Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp.
+ (WebCore):
+ (WebCore::CCIOSurfaceDrawQuad::create):
+ (WebCore::CCIOSurfaceDrawQuad::CCIOSurfaceDrawQuad):
+ * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h.
+ (WebCore):
+ (CCIOSurfaceDrawQuad):
+ (WebCore::CCIOSurfaceDrawQuad::flipped):
+ (WebCore::CCIOSurfaceDrawQuad::ioSurfaceSize):
+ (WebCore::CCIOSurfaceDrawQuad::ioSurfaceTextureId):
+ * platform/graphics/chromium/cc/CCTextureDrawQuad.cpp:
+ (WebCore::CCTextureDrawQuad::create):
+ (WebCore::CCTextureDrawQuad::CCTextureDrawQuad):
+ * platform/graphics/chromium/cc/CCTextureDrawQuad.h:
+ (CCTextureDrawQuad):
+ * platform/graphics/chromium/cc/CCTextureLayerImpl.cpp:
+ (WebCore::CCTextureLayerImpl::appendQuads):
+
2012-04-26 Benjamin Poulain <[email protected]>
Use WebKit types for the cache of ObjcClass::methodsNamed()
Modified: trunk/Source/WebCore/WebCore.gypi (115393 => 115394)
--- trunk/Source/WebCore/WebCore.gypi 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/WebCore.gypi 2012-04-27 01:24:04 UTC (rev 115394)
@@ -3637,6 +3637,8 @@
'platform/graphics/chromium/cc/CCGestureCurve.h',
'platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp',
'platform/graphics/chromium/cc/CCHeadsUpDisplay.h',
+ 'platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp',
+ 'platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h',
'platform/graphics/chromium/cc/CCInputHandler.h',
'platform/graphics/chromium/cc/CCKeyframedAnimationCurve.cpp',
'platform/graphics/chromium/cc/CCKeyframedAnimationCurve.h',
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-04-27 01:24:04 UTC (rev 115394)
@@ -34,6 +34,7 @@
#if USE(ACCELERATED_COMPOSITING)
#include "LayerRendererChromium.h"
+#include "Extensions3D.h"
#include "Extensions3DChromium.h"
#include "FloatQuad.h"
#include "GeometryBinding.h"
@@ -42,8 +43,10 @@
#include "LayerChromium.h"
#include "LayerPainterChromium.h"
#include "ManagedTexture.h"
+#include "NativeImageSkia.h"
#include "NotImplemented.h"
#include "PlatformColor.h"
+#include "PlatformContextSkia.h"
#include "RenderSurfaceChromium.h"
#include "TextStream.h"
#include "TextureCopier.h"
@@ -54,6 +57,7 @@
#include "cc/CCCheckerboardDrawQuad.h"
#include "cc/CCDamageTracker.h"
#include "cc/CCDebugBorderDrawQuad.h"
+#include "cc/CCIOSurfaceDrawQuad.h"
#include "cc/CCLayerImpl.h"
#include "cc/CCLayerTreeHostCommon.h"
#include "cc/CCMathUtil.h"
@@ -64,9 +68,6 @@
#include "cc/CCTextureDrawQuad.h"
#include "cc/CCTileDrawQuad.h"
#include "cc/CCVideoDrawQuad.h"
-#include "Extensions3D.h"
-#include "NativeImageSkia.h"
-#include "PlatformContextSkia.h"
#include <public/WebVideoFrame.h>
#include <wtf/CurrentTime.h>
#include <wtf/MainThread.h>
@@ -474,6 +475,9 @@
case CCDrawQuad::DebugBorder:
drawDebugBorderQuad(quad->toDebugBorderDrawQuad());
break;
+ case CCDrawQuad::IOSurfaceContent:
+ drawIOSurfaceQuad(quad->toIOSurfaceDrawQuad());
+ break;
case CCDrawQuad::RenderSurface:
drawRenderSurfaceQuad(quad->toRenderSurfaceDrawQuad());
break;
@@ -1015,22 +1019,7 @@
ASSERT(CCProxy::isImplThread());
unsigned matrixLocation = 0;
unsigned alphaLocation = 0;
- if (quad->ioSurfaceTextureId()) {
- TexTransformTextureProgramBinding binding;
- if (quad->flipped())
- binding.set(textureLayerTexRectProgramFlip());
- else
- binding.set(textureLayerTexRectProgram());
-
- GLC(context(), context()->activeTexture(GraphicsContext3D::TEXTURE0));
-
- GLC(context(), context()->useProgram(binding.programId));
- GLC(context(), context()->uniform1i(binding.samplerLocation, 0));
- GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, 0, quad->ioSurfaceSize().width(), quad->ioSurfaceSize().height()));
-
- matrixLocation = binding.matrixLocation;
- alphaLocation = binding.alphaLocation;
- } else if (quad->flipped() && quad->uvRect() == FloatRect(0, 0, 1, 1)) {
+ if (quad->flipped() && quad->uvRect() == FloatRect(0, 0, 1, 1)) {
// A flipped quad with the default UV mapping is common enough to use a special shader.
// Canvas 2d and WebGL layers use this path always and plugin/external texture layers use this by default.
const CCTextureLayerImpl::ProgramFlip* program = textureLayerProgramFlip();
@@ -1054,10 +1043,7 @@
}
GLC(context(), context()->activeTexture(GraphicsContext3D::TEXTURE0));
- if (quad->ioSurfaceTextureId())
- GLC(context(), context()->bindTexture(Extensions3D::TEXTURE_RECTANGLE_ARB, quad->ioSurfaceTextureId()));
- else
- GLC(context(), context()->bindTexture(GraphicsContext3D::TEXTURE_2D, quad->textureId()));
+ GLC(context(), context()->bindTexture(GraphicsContext3D::TEXTURE_2D, quad->textureId()));
// FIXME: setting the texture parameters every time is redundant. Move this code somewhere
// where it will only happen once per texture.
@@ -1073,10 +1059,38 @@
drawTexturedQuad(quad->layerTransform(), bounds.width(), bounds.height(), quad->opacity(), sharedGeometryQuad(), matrixLocation, alphaLocation, -1);
- GLC(m_context, m_context->blendFunc(GraphicsContext3D::ONE, GraphicsContext3D::ONE_MINUS_SRC_ALPHA));
+ if (!quad->premultipliedAlpha())
+ GLC(m_context, m_context->blendFunc(GraphicsContext3D::ONE, GraphicsContext3D::ONE_MINUS_SRC_ALPHA));
+}
- if (quad->ioSurfaceTextureId())
- GLC(context(), context()->bindTexture(Extensions3D::TEXTURE_RECTANGLE_ARB, 0));
+void LayerRendererChromium::drawIOSurfaceQuad(const CCIOSurfaceDrawQuad* quad)
+{
+ ASSERT(CCProxy::isImplThread());
+ TexTransformTextureProgramBinding binding;
+ if (quad->flipped())
+ binding.set(textureLayerTexRectProgramFlip());
+ else
+ binding.set(textureLayerTexRectProgram());
+
+ GLC(context(), context()->useProgram(binding.programId));
+ GLC(context(), context()->uniform1i(binding.samplerLocation, 0));
+ GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, 0, quad->ioSurfaceSize().width(), quad->ioSurfaceSize().height()));
+
+ GLC(context(), context()->activeTexture(GraphicsContext3D::TEXTURE0));
+ GLC(context(), context()->bindTexture(Extensions3D::TEXTURE_RECTANGLE_ARB, quad->ioSurfaceTextureId()));
+
+ // FIXME: setting the texture parameters every time is redundant. Move this code somewhere
+ // where it will only happen once per texture.
+ GLC(context(), context()->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MIN_FILTER, GraphicsContext3D::LINEAR));
+ GLC(context(), context()->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MAG_FILTER, GraphicsContext3D::LINEAR));
+ GLC(context(), context()->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_WRAP_S, GraphicsContext3D::CLAMP_TO_EDGE));
+ GLC(context(), context()->texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_WRAP_T, GraphicsContext3D::CLAMP_TO_EDGE));
+
+ const IntSize& bounds = quad->quadRect().size();
+
+ drawTexturedQuad(quad->layerTransform(), bounds.width(), bounds.height(), quad->opacity(), sharedGeometryQuad(), binding.matrixLocation, binding.alphaLocation, -1);
+
+ GLC(context(), context()->bindTexture(Extensions3D::TEXTURE_RECTANGLE_ARB, 0));
}
void LayerRendererChromium::drawHeadsUpDisplay(ManagedTexture* hudTexture, const IntSize& hudSize)
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-04-27 01:24:04 UTC (rev 115394)
@@ -176,6 +176,7 @@
void drawRenderSurfaceQuad(const CCRenderSurfaceDrawQuad*);
void drawSolidColorQuad(const CCSolidColorDrawQuad*);
void drawTextureQuad(const CCTextureDrawQuad*);
+ void drawIOSurfaceQuad(const CCIOSurfaceDrawQuad*);
void drawTileQuad(const CCTileDrawQuad*);
void drawVideoQuad(const CCVideoDrawQuad*);
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.cpp (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.cpp 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.cpp 2012-04-27 01:24:04 UTC (rev 115394)
@@ -29,10 +29,11 @@
#include "cc/CCCheckerboardDrawQuad.h"
#include "cc/CCDebugBorderDrawQuad.h"
+#include "cc/CCIOSurfaceDrawQuad.h"
#include "cc/CCLayerImpl.h"
-#include "cc/CCTextureDrawQuad.h"
#include "cc/CCRenderSurfaceDrawQuad.h"
#include "cc/CCSolidColorDrawQuad.h"
+#include "cc/CCTextureDrawQuad.h"
#include "cc/CCTileDrawQuad.h"
#include "cc/CCVideoDrawQuad.h"
@@ -77,6 +78,12 @@
return static_cast<const CCDebugBorderDrawQuad*>(this);
}
+const CCIOSurfaceDrawQuad* CCDrawQuad::toIOSurfaceDrawQuad() const
+{
+ ASSERT(m_material == IOSurfaceContent);
+ return static_cast<const CCIOSurfaceDrawQuad*>(this);
+}
+
const CCRenderSurfaceDrawQuad* CCDrawQuad::toRenderSurfaceDrawQuad() const
{
ASSERT(m_material == RenderSurface);
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h 2012-04-27 01:24:04 UTC (rev 115394)
@@ -32,6 +32,7 @@
class CCCheckerboardDrawQuad;
class CCDebugBorderDrawQuad;
+class CCIOSurfaceDrawQuad;
class CCRenderSurfaceDrawQuad;
class CCSolidColorDrawQuad;
class CCTextureDrawQuad;
@@ -65,6 +66,7 @@
Invalid,
Checkerboard,
DebugBorder,
+ IOSurfaceContent,
RenderSurface,
TextureContent,
SolidColor,
@@ -76,6 +78,7 @@
const CCCheckerboardDrawQuad* toCheckerboardDrawQuad() const;
const CCDebugBorderDrawQuad* toDebugBorderDrawQuad() const;
+ const CCIOSurfaceDrawQuad* toIOSurfaceDrawQuad() const;
const CCRenderSurfaceDrawQuad* toRenderSurfaceDrawQuad() const;
const CCSolidColorDrawQuad* toSolidColorDrawQuad() const;
const CCTextureDrawQuad* toTextureDrawQuad() const;
Copied: trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp (from rev 115393, trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp) (0 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp (rev 0)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp 2012-04-27 01:24:04 UTC (rev 115394)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "cc/CCIOSurfaceDrawQuad.h"
+
+namespace WebCore {
+
+PassOwnPtr<CCIOSurfaceDrawQuad> CCIOSurfaceDrawQuad::create(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+{
+ return adoptPtr(new CCIOSurfaceDrawQuad(sharedQuadState, quadRect, flipped, ioSurfaceSize, ioSurfaceTextureId));
+}
+
+CCIOSurfaceDrawQuad::CCIOSurfaceDrawQuad(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+ : CCDrawQuad(sharedQuadState, CCDrawQuad::IOSurfaceContent, quadRect)
+ , m_flipped(flipped)
+ , m_ioSurfaceSize(ioSurfaceSize)
+ , m_ioSurfaceTextureId(ioSurfaceTextureId)
+{
+}
+
+}
Copied: trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h (from rev 115393, trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h) (0 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h (rev 0)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h 2012-04-27 01:24:04 UTC (rev 115394)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CCIOSurfaceDrawQuad_h
+#define CCIOSurfaceDrawQuad_h
+
+#include "cc/CCDrawQuad.h"
+#include <wtf/PassOwnPtr.h>
+
+namespace WebCore {
+
+class CCIOSurfaceDrawQuad : public CCDrawQuad {
+ WTF_MAKE_NONCOPYABLE(CCIOSurfaceDrawQuad);
+public:
+ static PassOwnPtr<CCIOSurfaceDrawQuad> create(const CCSharedQuadState*, const IntRect&, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+
+ bool flipped() const { return m_flipped; }
+ const IntSize& ioSurfaceSize() const { return m_ioSurfaceSize; }
+ unsigned ioSurfaceTextureId() const { return m_ioSurfaceTextureId; }
+
+private:
+ CCIOSurfaceDrawQuad(const CCSharedQuadState*, const IntRect&, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+
+ bool m_flipped;
+ IntSize m_ioSurfaceSize;
+ unsigned m_ioSurfaceTextureId;
+};
+
+}
+
+#endif
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp 2012-04-27 01:24:04 UTC (rev 115394)
@@ -29,19 +29,17 @@
namespace WebCore {
-PassOwnPtr<CCTextureDrawQuad> CCTextureDrawQuad::create(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+PassOwnPtr<CCTextureDrawQuad> CCTextureDrawQuad::create(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped)
{
- return adoptPtr(new CCTextureDrawQuad(sharedQuadState, quadRect, textureId, premultipliedAlpha, uvRect, flipped, ioSurfaceSize, ioSurfaceTextureId));
+ return adoptPtr(new CCTextureDrawQuad(sharedQuadState, quadRect, textureId, premultipliedAlpha, uvRect, flipped));
}
-CCTextureDrawQuad::CCTextureDrawQuad(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+CCTextureDrawQuad::CCTextureDrawQuad(const CCSharedQuadState* sharedQuadState, const IntRect& quadRect, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped)
: CCDrawQuad(sharedQuadState, CCDrawQuad::TextureContent, quadRect)
, m_textureId(textureId)
, m_premultipliedAlpha(premultipliedAlpha)
, m_uvRect(uvRect)
, m_flipped(flipped)
- , m_ioSurfaceSize(ioSurfaceSize)
- , m_ioSurfaceTextureId(ioSurfaceTextureId)
{
}
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h 2012-04-27 01:24:04 UTC (rev 115394)
@@ -31,29 +31,23 @@
namespace WebCore {
-class CCLayerImpl;
class CCTextureDrawQuad : public CCDrawQuad {
WTF_MAKE_NONCOPYABLE(CCTextureDrawQuad);
public:
- static PassOwnPtr<CCTextureDrawQuad> create(const CCSharedQuadState*, const IntRect&, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+ static PassOwnPtr<CCTextureDrawQuad> create(const CCSharedQuadState*, const IntRect&, unsigned textureId, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped);
unsigned textureId() const { return m_textureId; }
bool premultipliedAlpha() const { return m_premultipliedAlpha; }
FloatRect uvRect() const { return m_uvRect; }
bool flipped() const { return m_flipped; }
- const IntSize& ioSurfaceSize() const { return m_ioSurfaceSize; }
- unsigned ioSurfaceTextureId() const { return m_ioSurfaceTextureId; }
-
private:
- CCTextureDrawQuad(const CCSharedQuadState*, const IntRect&, unsigned texture_id, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+ CCTextureDrawQuad(const CCSharedQuadState*, const IntRect&, unsigned texture_id, bool premultipliedAlpha, const FloatRect& uvRect, bool flipped);
unsigned m_textureId;
bool m_premultipliedAlpha;
FloatRect m_uvRect;
bool m_flipped;
- IntSize m_ioSurfaceSize;
- unsigned m_ioSurfaceTextureId;
};
}
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureLayerImpl.cpp (115393 => 115394)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureLayerImpl.cpp 2012-04-27 01:06:50 UTC (rev 115393)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCTextureLayerImpl.cpp 2012-04-27 01:24:04 UTC (rev 115394)
@@ -32,6 +32,7 @@
#include "Extensions3DChromium.h"
#include "GraphicsContext3D.h"
#include "LayerRendererChromium.h"
+#include "cc/CCIOSurfaceDrawQuad.h"
#include "cc/CCProxy.h"
#include "cc/CCQuadCuller.h"
#include "cc/CCTextureDrawQuad.h"
@@ -94,7 +95,10 @@
void CCTextureLayerImpl::appendQuads(CCQuadCuller& quadList, const CCSharedQuadState* sharedQuadState, bool&)
{
IntRect quadRect(IntPoint(), bounds());
- quadList.append(CCTextureDrawQuad::create(sharedQuadState, quadRect, m_textureId, m_premultipliedAlpha, m_uvRect, m_flipped, m_ioSurfaceSize, m_ioSurfaceTextureId));
+ if (m_textureId)
+ quadList.append(CCTextureDrawQuad::create(sharedQuadState, quadRect, m_textureId, m_premultipliedAlpha, m_uvRect, m_flipped));
+ else if (m_ioSurfaceTextureId)
+ quadList.append(CCIOSurfaceDrawQuad::create(sharedQuadState, quadRect, m_flipped, m_ioSurfaceSize, m_ioSurfaceTextureId));
}
void CCTextureLayerImpl::dumpLayerProperties(TextStream& ts, int indent) const