Title: [115394] trunk/Source/WebCore
Revision
115394
Author
[email protected]
Date
2012-04-26 18:24:04 -0700 (Thu, 26 Apr 2012)

Log Message

[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):

Modified Paths

Added Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to