Source/WebCore/ChangeLog

 12011-04-20 Nat Duca <nduca@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 [chromium] Fix artefacts in compositor HUD when resizing
 6 https://bugs.webkit.org/show_bug.cgi?id=58969
 7
 8 HUD was using the tiler program and not setting the texture
 9 transform. The HUD would thus draw with a texture transform based
 10 on the last tile drawn, leading sometimes to distortion.
 11
 12 * platform/graphics/chromium/LayerRendererChromium.cpp:
 13 (WebCore::LayerRendererChromium::initializeSharedObjects):
 14 (WebCore::LayerRendererChromium::cleanupSharedObjects):
 15 * platform/graphics/chromium/LayerRendererChromium.h:
 16 (WebCore::LayerRendererChromium::headsUpDisplayProgram):
 17 * platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:
 18 (WebCore::CCHeadsUpDisplay::draw):
 19 * platform/graphics/chromium/cc/CCHeadsUpDisplay.h:
 20
1212011-04-19 Brent Fulgham <bfulgham@webkit.org>
222
323 Reviewed by Adam Roben.

Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

@@bool LayerRendererChromium::initializeSharedObjects()
985985
986986 m_sharedGeometry = adoptPtr(new GeometryBinding(m_context.get()));
987987 m_borderProgram = adoptPtr(new LayerChromium::BorderProgram(m_context.get()));
 988 m_headsUpDisplayProgram = adoptPtr(new CCHeadsUpDisplay::Program(m_context.get()));
988989 m_canvasLayerProgram = adoptPtr(new CCCanvasLayerImpl::Program(m_context.get()));
989990 m_videoLayerRGBAProgram = adoptPtr(new CCVideoLayerImpl::RGBAProgram(m_context.get()));
990991 m_videoLayerYUVProgram = adoptPtr(new CCVideoLayerImpl::YUVProgram(m_context.get()));

@@bool LayerRendererChromium::initializeSharedObjects()
995996
996997 if (!m_sharedGeometry->initialized() || !m_borderProgram->initialized()
997998 || !m_canvasLayerProgram->initialized()
 999 || !m_headsUpDisplayProgram->initialized()
9981000 || !m_videoLayerRGBAProgram->initialized() || !m_videoLayerYUVProgram->initialized()
9991001 || !m_pluginLayerProgram->initialized() || !m_renderSurfaceProgram->initialized()
10001002 || !m_renderSurfaceMaskProgram->initialized() || !m_tilerProgram->initialized()) {

@@void LayerRendererChromium::cleanupSharedObjects()
10141016 m_sharedGeometry.clear();
10151017 m_borderProgram.clear();
10161018 m_canvasLayerProgram.clear();
 1019 m_headsUpDisplayProgram.clear();
10171020 m_videoLayerRGBAProgram.clear();
10181021 m_videoLayerYUVProgram.clear();
10191022 m_pluginLayerProgram.clear();

Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h

@@public:
110110
111111 const GeometryBinding* sharedGeometry() const { return m_sharedGeometry.get(); }
112112 const LayerChromium::BorderProgram* borderProgram() const { return m_borderProgram.get(); }
 113 const CCHeadsUpDisplay::Program* headsUpDisplayProgram() const { return m_headsUpDisplayProgram.get(); }
113114 const RenderSurfaceChromium::Program* renderSurfaceProgram() const { return m_renderSurfaceProgram.get(); }
114115 const RenderSurfaceChromium::MaskProgram* renderSurfaceMaskProgram() const { return m_renderSurfaceMaskProgram.get(); }
115116 const LayerTilerChromium::Program* tilerProgram() const { return m_tilerProgram.get(); }

@@private:
205206 // we cannot store these values in static variables.
206207 OwnPtr<GeometryBinding> m_sharedGeometry;
207208 OwnPtr<LayerChromium::BorderProgram> m_borderProgram;
 209 OwnPtr<CCHeadsUpDisplay::Program> m_headsUpDisplayProgram;
208210 OwnPtr<RenderSurfaceChromium::Program> m_renderSurfaceProgram;
209211 OwnPtr<RenderSurfaceChromium::MaskProgram> m_renderSurfaceMaskProgram;
210212 OwnPtr<LayerTilerChromium::Program> m_tilerProgram;

Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp

3232#include "FontDescription.h"
3333#include "GraphicsContext3D.h"
3434#include "LayerChromium.h"
 35#include "LayerRendererChromium.h"
3536#include "LayerTexture.h"
3637#include "TextRun.h"
3738#include "TextStream.h"

@@void CCHeadsUpDisplay::draw()
109110 }
110111
111112 // Draw the HUD onto the default render surface.
112  const LayerTilerChromium::Program* program = m_layerRenderer->tilerProgram();
 113 const Program* program = m_layerRenderer->headsUpDisplayProgram();
113114 ASSERT(program && program->initialized());
114115 GLC(context, context->activeTexture(GraphicsContext3D::TEXTURE0));
115116 m_hudTexture->bindTexture();

Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.h

2828#if USE(ACCELERATED_COMPOSITING)
2929
3030#include "Font.h"
31 #include "LayerRendererChromium.h"
32 
 31#include "ProgramBinding.h"
 32#include "ShaderChromium.h"
3333
3434namespace WebCore {
3535
3636class GeometryBinding;
3737class GraphicsContext3D;
 38class LayerRendererChromium;
 39class LayerTexture;
3840
3941// Class that handles drawing of composited render layers using GL.
4042class CCHeadsUpDisplay {

@@public:
5860 bool enabled() const { return m_showPlatformLayerTree || m_showFPSCounter; }
5961 void draw();
6062
 63 typedef ProgramBinding<VertexShaderPosTex, FragmentShaderBGRATexAlpha> Program;
 64
6165private:
6266 explicit CCHeadsUpDisplay(LayerRendererChromium* owner);
6367 void drawHudContents(GraphicsContext*, const IntSize& hudSize);