8% DHTML talos regression from bug 575521

RESOLVED FIXED

Status

()

Core
Graphics
RESOLVED FIXED
8 years ago
7 years ago

People

(Reporter: Joe Drew (not getting mail), Assigned: Joe Drew (not getting mail))

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Assignee)

Description

8 years ago
Checking in bug 575521 caused an 8% regression on Talos DHTML. We should look into this to see if there's anything obviously wrong here, or any good ways to fix it.
(Assignee)

Comment 1

8 years ago
Running the worst-hit tdhtml test, slidingballs.html, 10 times gives me the following:

Without client storage (the most important part of bug 575521), memcpy is called 595684 times for a total of 81505249 bytes.

With client storage, memcpy is called 529385 times for a total of 620857396 bytes. (An order of magnitude larger!)

The most common stack for this memcpy is:

              libSystem.B.dylib`memcpy
              GeForceGLDriver`gldFinish+0x2c676
              GeForceGLDriver`gldIsTextureResident+0x189
              GeForceGLDriver`gldCreateTexture+0x4de
              GeForceGLDriver`gldFinish+0x2916f
              GeForceGLDriver`gldUpdateDispatch+0x31a
              GLEngine`gleDoDrawDispatchCore+0x10a
              GLEngine`gleDrawArraysOrElements_Entries_Body+0x9e
              GLEngine`glDrawArrays_Exec+0x36a
              libGL.dylib`glDrawArrays+0x2d
              XUL`mozilla::layers::ThebesLayerBufferOGL::RenderTo(nsIntPoint const&, mozilla::layers::LayerManagerOGL*)+0x23d
              XUL`mozilla::layers::ThebesLayerOGL::RenderLayer(int, nsIntPoint const&)+0x12c
              XUL`mozilla::layers::ContainerLayerOGL::RenderLayer(int, nsIntPoint const&)+0x279
              XUL`mozilla::layers::ContainerLayerOGL::RenderLayer(int, nsIntPoint const&)+0x279
              XUL`mozilla::layers::LayerManagerOGL::Render()+0x259
              XUL`mozilla::layers::LayerManagerOGL::EndTransaction(void (*)(mozilla::layers::ThebesLayer*, gfxContext*, nsIntRegion const&, nsIntRegion const&, void*), void*)+0x8c
              XUL`nsDisplayList::PaintForFrame(nsDisplayListBuilder*, nsIRenderingContext*, nsIFrame*, unsigned int) const+0x4f7
              XUL`nsDisplayList::PaintRoot(nsDisplayListBuilder*, nsIRenderingContext*, unsigned int) const+0x2d
              XUL`nsLayoutUtils::PaintFrame(nsIRenderingContext*, nsIFrame*, nsRegion const&, unsigned int, unsigned int)+0x4e4
              XUL`PresShell::Paint(nsIView*, nsIView*, nsIWidget*, nsRegion const&, nsIntRegion const&, int, int)+0x1a4

I think the only way to reduce the cost of this is probably to use glTextureRangeAPPLE.
The patches in bug 604101 appear to fix this regression.
Depends on: 604101
(Assignee)

Comment 3

7 years ago
Hooray!!
Status: NEW → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.