Diff
Modified: trunk/Source/Platform/ChangeLog (123008 => 123009)
--- trunk/Source/Platform/ChangeLog 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/Platform/ChangeLog 2012-07-18 20:25:11 UTC (rev 123009)
@@ -1,3 +1,16 @@
+2012-07-18 Sailesh Agrawal <[email protected]>
+
+ Chromium Mac: Add TEXTURE_RECTANGLE_ARB support to CCVideoLayerImpl
+ https://bugs.webkit.org/show_bug.cgi?id=91169
+
+ Reviewed by Adrienne Walker.
+
+ Added a "orientation" field to WebCompositorIOSurfaceQuad. This is used at draw time to flip the texture if necessary.
+
+ * chromium/public/WebCompositorIOSurfaceQuad.h: Added orientation field to the constructor.
+ (WebKit::WebCompositorIOSurfaceQuad::orientation):
+ (WebCompositorIOSurfaceQuad): The new orientation field should be set to Flipped if the texture should be flipped when drawing.
+
2012-07-13 Tony Payne <[email protected]>
Remove Widget from screenColorProfile
Modified: trunk/Source/Platform/chromium/public/WebCompositorIOSurfaceQuad.h (123008 => 123009)
--- trunk/Source/Platform/chromium/public/WebCompositorIOSurfaceQuad.h 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/Platform/chromium/public/WebCompositorIOSurfaceQuad.h 2012-07-18 20:25:11 UTC (rev 123009)
@@ -37,20 +37,27 @@
class WebCompositorIOSurfaceQuad : public WebCompositorQuad {
public:
#if WEBKIT_IMPLEMENTATION
- static PassOwnPtr<WebCompositorIOSurfaceQuad> create(const WebCompositorSharedQuadState*, const WebCore::IntRect&, const WebCore::IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+ enum Orientation {
+ Flipped,
+ Unflipped
+ };
+ static PassOwnPtr<WebCompositorIOSurfaceQuad> create(const WebCompositorSharedQuadState*, const WebCore::IntRect&, const WebCore::IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId, Orientation);
+
WebCore::IntSize ioSurfaceSize() const { return m_ioSurfaceSize; }
unsigned ioSurfaceTextureId() const { return m_ioSurfaceTextureId; }
+ Orientation orientation() const { return m_orientation; }
#endif
static const WebCompositorIOSurfaceQuad* materialCast(const WebCompositorQuad*);
private:
#if WEBKIT_IMPLEMENTATION
- WebCompositorIOSurfaceQuad(const WebCompositorSharedQuadState*, const WebCore::IntRect&, const WebCore::IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId);
+ WebCompositorIOSurfaceQuad(const WebCompositorSharedQuadState*, const WebCore::IntRect&, const WebCore::IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId, Orientation);
#endif
WebSize m_ioSurfaceSize;
unsigned m_ioSurfaceTextureId;
+ Orientation m_orientation;
};
#pragma pack(pop)
Modified: trunk/Source/WebCore/ChangeLog (123008 => 123009)
--- trunk/Source/WebCore/ChangeLog 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/ChangeLog 2012-07-18 20:25:11 UTC (rev 123009)
@@ -1,3 +1,26 @@
+2012-07-18 Sailesh Agrawal <[email protected]>
+
+ Chromium Mac: Add TEXTURE_RECTANGLE_ARB support to CCVideoLayerImpl
+ https://bugs.webkit.org/show_bug.cgi?id=91169
+
+ Reviewed by Adrienne Walker.
+
+ This extends CCVideoLayerImpl to support TEXTURE_RECTANGLE_ARB. This texture target is used by the Mac hardware accelerated video decoder.
+
+ No new tests (HW video decode on Mac is being tested manually.).
+
+ * platform/chromium/support/WebCompositorIOSurfaceQuad.cpp:
+ (WebKit::WebCompositorIOSurfaceQuad::create): Added an orientation argument.
+ (WebKit::WebCompositorIOSurfaceQuad::WebCompositorIOSurfaceQuad): Added an orientation argument.
+ * platform/graphics/chromium/LayerRendererChromium.cpp:
+ (WebCore::LayerRendererChromium::drawIOSurfaceQuad): Added support for non-flipped IOSurface textures.
+ * platform/graphics/chromium/LayerRendererChromium.h:
+ (LayerRendererChromium): Changed TextureIOSurfaceProgram to be non-flipped. To draw flipped textures drawIOSurfaceQuad sets a different value for texTransformLocation.
+ * platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.cpp:
+ (WebCore::CCIOSurfaceLayerImpl::appendQuads): Updated call to CCIOSurfaceDrawQuad constructor.
+ * platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:
+ (WebCore::CCVideoLayerImpl::appendQuads): Added support for drawing TEXTURE_RECTANGLE_ARB textures.
+
2012-07-18 Michael Saboff <[email protected]>
Make TextCodecLatin1 handle 8 bit data without converting to UChar's
Modified: trunk/Source/WebCore/platform/chromium/support/WebCompositorIOSurfaceQuad.cpp (123008 => 123009)
--- trunk/Source/WebCore/platform/chromium/support/WebCompositorIOSurfaceQuad.cpp 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/platform/chromium/support/WebCompositorIOSurfaceQuad.cpp 2012-07-18 20:25:11 UTC (rev 123009)
@@ -31,15 +31,16 @@
namespace WebKit {
-PassOwnPtr<WebCompositorIOSurfaceQuad> WebCompositorIOSurfaceQuad::create(const WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+PassOwnPtr<WebCompositorIOSurfaceQuad> WebCompositorIOSurfaceQuad::create(const WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId, Orientation orientation)
{
- return adoptPtr(new WebCompositorIOSurfaceQuad(sharedQuadState, quadRect, ioSurfaceSize, ioSurfaceTextureId));
+ return adoptPtr(new WebCompositorIOSurfaceQuad(sharedQuadState, quadRect, ioSurfaceSize, ioSurfaceTextureId, orientation));
}
-WebCompositorIOSurfaceQuad::WebCompositorIOSurfaceQuad(const WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId)
+WebCompositorIOSurfaceQuad::WebCompositorIOSurfaceQuad(const WebCompositorSharedQuadState* sharedQuadState, const IntRect& quadRect, const IntSize& ioSurfaceSize, unsigned ioSurfaceTextureId, Orientation orientation)
: WebCompositorQuad(sharedQuadState, WebCompositorQuad::IOSurfaceContent, quadRect)
, m_ioSurfaceSize(ioSurfaceSize)
, m_ioSurfaceTextureId(ioSurfaceTextureId)
+ , m_orientation(orientation)
{
}
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (123008 => 123009)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2012-07-18 20:25:11 UTC (rev 123009)
@@ -1072,7 +1072,10 @@
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()));
+ if (quad->orientation() == CCIOSurfaceDrawQuad::Flipped)
+ GLC(context(), context()->uniform4f(binding.texTransformLocation, 0, quad->ioSurfaceSize().height(), quad->ioSurfaceSize().width(), quad->ioSurfaceSize().height() * -1.0));
+ else
+ 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()));
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h (123008 => 123009)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2012-07-18 20:25:11 UTC (rev 123009)
@@ -200,7 +200,7 @@
// Texture shaders.
typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexAlpha> TextureProgram;
typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexFlipAlpha> TextureProgramFlip;
- typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexRectFlipAlpha> TextureIOSurfaceProgram;
+ typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexRectAlpha> TextureIOSurfaceProgram;
// Video shaders.
typedef ProgramBinding<VertexShaderVideoTransform, FragmentShaderOESImageExternal> VideoStreamTextureProgram;
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.cpp (123008 => 123009)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.cpp 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.cpp 2012-07-18 20:25:11 UTC (rev 123009)
@@ -99,7 +99,7 @@
void CCIOSurfaceLayerImpl::appendQuads(CCQuadCuller& quadList, const CCSharedQuadState* sharedQuadState, bool&)
{
IntRect quadRect(IntPoint(), contentBounds());
- quadList.append(CCIOSurfaceDrawQuad::create(sharedQuadState, quadRect, m_ioSurfaceSize, m_ioSurfaceTextureId));
+ quadList.append(CCIOSurfaceDrawQuad::create(sharedQuadState, quadRect, m_ioSurfaceSize, m_ioSurfaceTextureId, CCIOSurfaceDrawQuad::Flipped));
}
void CCIOSurfaceLayerImpl::dumpLayerProperties(TextStream& ts, int indent) const
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp (123008 => 123009)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp 2012-07-18 20:22:43 UTC (rev 123008)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp 2012-07-18 20:25:11 UTC (rev 123009)
@@ -37,6 +37,7 @@
#include "TextStream.h"
#include "TextureAllocator.h"
#include "cc/CCGraphicsContext.h"
+#include "cc/CCIOSurfaceDrawQuad.h"
#include "cc/CCLayerTreeHostImpl.h"
#include "cc/CCProxy.h"
#include "cc/CCQuadCuller.h"
@@ -222,6 +223,12 @@
quadList.append(textureQuad.release());
break;
}
+ case Extensions3D::TEXTURE_RECTANGLE_ARB: {
+ IntSize textureSize(m_frame->width(), m_frame->height());
+ OwnPtr<CCIOSurfaceDrawQuad> ioSurfaceQuad = CCIOSurfaceDrawQuad::create(sharedQuadState, quadRect, textureSize, m_frame->textureId(), CCIOSurfaceDrawQuad::Unflipped);
+ quadList.append(ioSurfaceQuad.release());
+ break;
+ }
case Extensions3DChromium::GL_TEXTURE_EXTERNAL_OES: {
// StreamTexture hardware decoder.
OwnPtr<CCStreamVideoDrawQuad> streamVideoQuad = CCStreamVideoDrawQuad::create(sharedQuadState, quadRect, m_frame->textureId(), m_streamTextureMatrix);