Changeset 143237 in webkit


Ignore:
Timestamp:
Feb 18, 2013 9:45:15 AM (11 years ago)
Author:
aandrey@chromium.org
Message:

Web Inspector: [Canvas] fix replay log grouping by frames
https://bugs.webkit.org/show_bug.cgi?id=110122

Reviewed by Pavel Feldman.

Source/WebCore:

Bug: log grouping by frames did not work if a frame end call is not a draw call.
Drive-by: Last draw call group may not contain a draw call. In this case merge it into the previous group.

  • inspector/front-end/CanvasProfileView.js:

(WebInspector.CanvasProfileView.prototype._appendCallNode):
(WebInspector.CanvasProfileView.prototype._maybeMergeLastDrawCallGroups):

LayoutTests:

Canvas replay test: last command is not a draw call.

  • inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt:
  • inspector/profiler/canvas2d/canvas-replay-log-grid.html:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r143236 r143237  
     12013-02-18  Andrey Adaikin  <aandrey@chromium.org>
     2
     3        Web Inspector: [Canvas] fix replay log grouping by frames
     4        https://bugs.webkit.org/show_bug.cgi?id=110122
     5
     6        Reviewed by Pavel Feldman.
     7
     8        Canvas replay test: last command is not a draw call.
     9
     10        * inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt:
     11        * inspector/profiler/canvas2d/canvas-replay-log-grid.html:
     12
    1132013-02-18  Stephen White  <senorblanco@chromium.org>
    214
  • trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid-expected.txt

    r143206 r143237  
    55   |                   Frame #1 |                                | |
    66   |         Draw call group #1 |                                | |
    7  1 |                beginPath() | canvas-replay-log-grid.html:26 | |
    8  2 |       rect(0, 0, 100, 100) | canvas-replay-log-grid.html:27 | |
    9  3 |    context.fillStyle = red | canvas-replay-log-grid.html:28 | |
    10  4 |                     fill() | canvas-replay-log-grid.html:29 | |
     7 1 |                     save() | canvas-replay-log-grid.html:26 | |
     8 2 |                beginPath() | canvas-replay-log-grid.html:27 | |
     9 3 |       rect(0, 0, 100, 100) | canvas-replay-log-grid.html:28 | |
     10 4 |    context.fillStyle = red | canvas-replay-log-grid.html:29 | |
     11 5 |                     fill() | canvas-replay-log-grid.html:30 | |
    1112   |         Draw call group #2 |                                | |
    12  5 |                beginPath() | canvas-replay-log-grid.html:26 | |
    13  6 |         rect(5, 5, 95, 95) | canvas-replay-log-grid.html:27 | |
    14  7 |  context.fillStyle = green | canvas-replay-log-grid.html:28 | |
    15  8 |                     fill() | canvas-replay-log-grid.html:29 | |
     13 6 |                  restore() | canvas-replay-log-grid.html:31 | |
     14 7 |                     save() | canvas-replay-log-grid.html:26 | |
     15 8 |                beginPath() | canvas-replay-log-grid.html:27 | |
     16 9 |         rect(5, 5, 95, 95) | canvas-replay-log-grid.html:28 | |
     1710 |  context.fillStyle = green | canvas-replay-log-grid.html:29 | |
     1811 |                     fill() | canvas-replay-log-grid.html:30 | |
     1912 |                  restore() | canvas-replay-log-grid.html:31 | |
    1620   |                   Frame #2 |                                | |
    1721   |         Draw call group #3 |                                | |
    18  9 |                beginPath() | canvas-replay-log-grid.html:26 | |
    19 10 |       rect(10, 10, 90, 90) | canvas-replay-log-grid.html:27 | |
    20 11 |   context.fillStyle = blue | canvas-replay-log-grid.html:28 | |
    21 12 |                     fill() | canvas-replay-log-grid.html:29 | |
     2213 |                     save() | canvas-replay-log-grid.html:26 | |
     2314 |                beginPath() | canvas-replay-log-grid.html:27 | |
     2415 |       rect(10, 10, 90, 90) | canvas-replay-log-grid.html:28 | |
     2516 |   context.fillStyle = blue | canvas-replay-log-grid.html:29 | |
     2617 |                     fill() | canvas-replay-log-grid.html:30 | |
    2227   |         Draw call group #4 |                                | |
    23 13 |                beginPath() | canvas-replay-log-grid.html:26 | |
    24 14 |       rect(15, 15, 85, 85) | canvas-replay-log-grid.html:27 | |
    25 15 | context.fillStyle = yellow | canvas-replay-log-grid.html:28 | |
    26 16 |                     fill() | canvas-replay-log-grid.html:29 | |
     2818 |                  restore() | canvas-replay-log-grid.html:31 | |
     2919 |                     save() | canvas-replay-log-grid.html:26 | |
     3020 |                beginPath() | canvas-replay-log-grid.html:27 | |
     3121 |       rect(15, 15, 85, 85) | canvas-replay-log-grid.html:28 | |
     3222 | context.fillStyle = yellow | canvas-replay-log-grid.html:29 | |
     3323 |                     fill() | canvas-replay-log-grid.html:30 | |
    2734   |         Draw call group #5 |                                | |
    28 17 |                beginPath() | canvas-replay-log-grid.html:26 | |
    29 18 |       rect(20, 20, 80, 80) | canvas-replay-log-grid.html:27 | |
    30 19 |  context.fillStyle = black | canvas-replay-log-grid.html:28 | |
    31 20 |                     fill() | canvas-replay-log-grid.html:29 | |
     3524 |                  restore() | canvas-replay-log-grid.html:31 | |
     3625 |                     save() | canvas-replay-log-grid.html:26 | |
     3726 |                beginPath() | canvas-replay-log-grid.html:27 | |
     3827 |       rect(20, 20, 80, 80) | canvas-replay-log-grid.html:28 | |
     3928 |  context.fillStyle = black | canvas-replay-log-grid.html:29 | |
     4029 |                     fill() | canvas-replay-log-grid.html:30 | |
     4130 |                  restore() | canvas-replay-log-grid.html:31 | |
    3242
  • trunk/LayoutTests/inspector/profiler/canvas2d/canvas-replay-log-grid.html

    r143206 r143237  
    2424    while (repeats-- > 0) {
    2525        var offset = 5 * round;
     26        context.save();
    2627        context.beginPath();
    2728        context.rect(offset, offset, 100 - offset, 100 - offset);
    2829        context.fillStyle = colors[round % colors.length];
    2930        context.fill();
     31        context.restore();
    3032        ++round;
    3133    }
  • trunk/Source/WebCore/ChangeLog

    r143233 r143237  
     12013-02-18  Andrey Adaikin  <aandrey@chromium.org>
     2
     3        Web Inspector: [Canvas] fix replay log grouping by frames
     4        https://bugs.webkit.org/show_bug.cgi?id=110122
     5
     6        Reviewed by Pavel Feldman.
     7
     8        Bug: log grouping by frames did not work if a frame end call is not a draw call.
     9        Drive-by: Last draw call group may not contain a draw call. In this case merge it into the previous group.
     10
     11        * inspector/front-end/CanvasProfileView.js:
     12        (WebInspector.CanvasProfileView.prototype._appendCallNode):
     13        (WebInspector.CanvasProfileView.prototype._maybeMergeLastDrawCallGroups):
     14
    1152013-02-18  Christophe Dumez  <ch.dumez@sisa.samsung.com>
    216
  • trunk/Source/WebCore/inspector/front-end/CanvasProfileView.js

    r143206 r143237  
    360360        if (drawCallGroup) {
    361361            var lastNode = drawCallGroup.children.peekLast();
    362             if (lastNode && lastNode.call.isDrawingCall)
     362            if (lastNode && (lastNode.call.isDrawingCall || lastNode.call.isFrameEndCall))
    363363                drawCallGroup = null;
    364364        }
     
    376376        }
    377377        drawCallGroup.appendChild(gridNode);
     378        if (gridNode.call.isFrameEndCall)
     379            this._maybeMergeLastDrawCallGroups();
    378380    },
    379381
     
    403405        }
    404406        frameGroup.appendChild(drawCallGroup);
     407    },
     408
     409    _maybeMergeLastDrawCallGroups: function()
     410    {
     411        var frameGroup = this._frameGroups.peekLast();
     412        if (!frameGroup)
     413            return;
     414        var groups = frameGroup.children.length;
     415        if (groups < 2)
     416            return;
     417        var src = frameGroup.children[groups - 1]
     418        for (var i = 0, n = src.children.length; i < n; ++i) {
     419            if (src.children[i].call.isDrawingCall)
     420                return;
     421        }
     422        var dst = frameGroup.children[groups - 2];
     423        while (src.children.length)
     424            dst.appendChild(src.children[0]);
     425        frameGroup.removeChild(src);
     426        this._drawCallGroups.pop();
    405427    },
    406428
Note: See TracChangeset for help on using the changeset viewer.