Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

Issue 7590009: Merge 92255 - Source/WebCore: [Chromium] Use edge-distance method for layer anti-aliasing. (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/835/
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
===================================================================
--- Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (revision 92714)
+++ Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (working copy)
@@ -106,6 +106,21 @@
}
+static TransformationMatrix screenMatrix(int x, int y, int width, int height)
+{
+ TransformationMatrix screen;
+
+ // Map to viewport.
+ screen.translate3d(x, y, 0);
+ screen.scale3d(width, height, 0);
+
+ // Map x, y and z to unit square.
+ screen.translate3d(0.5, 0.5, 0.5);
+ screen.scale3d(0.5, 0.5, 0.5);
+
+ return screen;
+}
+
PassRefPtr<LayerRendererChromium> LayerRendererChromium::create(CCLayerTreeHostClient* client, PassOwnPtr<LayerPainterChromium> contentPaint, bool accelerateDrawing)
{
RefPtr<GraphicsContext3D> context = client->createLayerTreeHostContext3D();
@@ -510,6 +525,7 @@
// The GL viewport covers the entire visible area, including the scrollbars.
GLC(m_context.get(), m_context->viewport(0, 0, m_viewportVisibleRect.width(), m_viewportVisibleRect.height()));
+ m_windowMatrix = screenMatrix(0, 0, m_viewportVisibleRect.width(), m_viewportVisibleRect.height());
// Bind the common vertex attributes used for drawing all the layers.
m_sharedGeometry->prepareForDraw();
@@ -1148,6 +1164,7 @@
else
m_projectionMatrix = orthoMatrix(drawRect.x(), drawRect.maxX(), drawRect.y(), drawRect.maxY());
GLC(m_context.get(), m_context->viewport(0, 0, drawRect.width(), drawRect.height()));
+ m_windowMatrix = screenMatrix(0, 0, drawRect.width(), drawRect.height());
}
@@ -1247,6 +1264,28 @@
return m_tilerProgramSwizzle.get();
}
+const LayerTilerChromium::ProgramAA* LayerRendererChromium::tilerProgramAA()
+{
+ if (!m_tilerProgramAA)
+ m_tilerProgramAA = adoptPtr(new LayerTilerChromium::ProgramAA(m_context.get()));
+ if (!m_tilerProgramAA->initialized()) {
+ TRACE_EVENT("LayerRendererChromium::tilerProgramAA::initialize", this, 0);
+ m_tilerProgramAA->initialize();
+ }
+ return m_tilerProgramAA.get();
+}
+
+const LayerTilerChromium::ProgramSwizzleAA* LayerRendererChromium::tilerProgramSwizzleAA()
+{
+ if (!m_tilerProgramSwizzleAA)
+ m_tilerProgramSwizzleAA = adoptPtr(new LayerTilerChromium::ProgramSwizzleAA(m_context.get()));
+ if (!m_tilerProgramSwizzleAA->initialized()) {
+ TRACE_EVENT("LayerRendererChromium::tilerProgramSwizzleAA::initialize", this, 0);
+ m_tilerProgramSwizzleAA->initialize();
+ }
+ return m_tilerProgramSwizzleAA.get();
+}
+
const CCCanvasLayerImpl::Program* LayerRendererChromium::canvasLayerProgram()
{
if (!m_canvasLayerProgram)

Powered by Google App Engine
This is Rietveld 408576698