| OLD | NEW |
| (Empty) |
| 1 <html> | |
| 2 <head> | |
| 3 <script src="../../../http/tests/inspector/inspector-test.js"></script> | |
| 4 <script src="../canvas-profiler-test.js"></script> | |
| 5 <script> | |
| 6 if (window.internals) | |
| 7 window.internals.settings.setWebGLErrorsToConsoleEnabled(false); | |
| 8 | |
| 9 var gl; | |
| 10 | |
| 11 function createCanvasContext() | |
| 12 { | |
| 13 gl = createWebGLContext(document.getElementById("canvas")); | |
| 14 console.assert(gl, "Failed to create a WebGL context"); | |
| 15 } | |
| 16 | |
| 17 function doCanvasCalls() | |
| 18 { | |
| 19 gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()); | |
| 20 gl.bufferData(gl.ARRAY_BUFFER, 5, gl.STATIC_DRAW); // 5 zeros | |
| 21 | |
| 22 var bufferView = new Uint16Array([0x0000, 0x1122, 0x3344, 0x5566, 0x7788, 0x
99aa, 0xbbcc, 0xddee, 0xffff]); | |
| 23 gl.bufferData(gl.ARRAY_BUFFER, bufferView, gl.DYNAMIC_DRAW); | |
| 24 | |
| 25 var bufferView2 = new Int8Array([1, 1, 2, 2, 3, 3]); | |
| 26 gl.bufferSubData(gl.ARRAY_BUFFER, 2, bufferView2); | |
| 27 | |
| 28 gl.bufferSubData(gl.ARRAY_BUFFER, 8, new ArrayBuffer(4)); // zero out [0x778
8, 0x99aa] | |
| 29 | |
| 30 var subBufferView = new Uint8Array(bufferView.buffer, 14, 4); // refers to [
0xddee, 0xffff] | |
| 31 gl.bufferSubData(gl.ARRAY_BUFFER, 0, subBufferView); | |
| 32 | |
| 33 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, 0, 1]), gl.DYNAMIC_DRAW
); | |
| 34 gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Uint32Array([1, 2, 3]));
// full replacement | |
| 35 gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Int16Array([-1, -2, -3, -4, -5, -6]
)); // full replacement | |
| 36 gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Int8Array([1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12])); // full replacement | |
| 37 gl.bufferSubData(gl.ARRAY_BUFFER, 1, new Uint32Array([0xffffffff, 0xffffffff
])); // -1 x8 | |
| 38 | |
| 39 var err = gl.getError(); | |
| 40 console.assert(err === gl.NO_ERROR, "Should be no GL errors, but was: " + er
r); | |
| 41 } | |
| 42 | |
| 43 function test() | |
| 44 { | |
| 45 var traceLog; | |
| 46 var traceLogId; | |
| 47 var resourceIds; | |
| 48 | |
| 49 InspectorTest.enableCanvasAgent(step1); | |
| 50 function step1() | |
| 51 { | |
| 52 InspectorTest.evaluateInPage("createCanvasContext()", step2); | |
| 53 } | |
| 54 function step2() | |
| 55 { | |
| 56 InspectorTest.CanvasAgent.startCapturing(didStartCapturing); | |
| 57 } | |
| 58 function didStartCapturing(error, id) | |
| 59 { | |
| 60 InspectorTest.assertTrue(!error && !!id, "Unexpected error: " + error); | |
| 61 InspectorTest.addResult("\nStarted capturing."); | |
| 62 traceLogId = id; | |
| 63 InspectorTest.evaluateInPage("doCanvasCalls()", didCanvasCalls); | |
| 64 } | |
| 65 function didCanvasCalls() | |
| 66 { | |
| 67 InspectorTest.CanvasAgent.stopCapturing(traceLogId, didStopCapturing); | |
| 68 } | |
| 69 function didStopCapturing() | |
| 70 { | |
| 71 InspectorTest.addResult("Stopped capturing."); | |
| 72 InspectorTest.CanvasAgent.getTraceLog(traceLogId, 0, undefined, didRecei
veTraceLog); | |
| 73 } | |
| 74 function didReceiveTraceLog(error, traceLogValue) | |
| 75 { | |
| 76 traceLog = traceLogValue; | |
| 77 InspectorTest.assertTrue(!error && !!traceLog, "Unexpected error: " + er
ror); | |
| 78 InspectorTest.assertTrue(traceLog.calls.length > 0, "Expected not empty
trace log calls array"); | |
| 79 resourceIds = InspectorTest.collectResourceIdsFromTraceLog(traceLog); | |
| 80 replayUntilNextBufferDataCall(0); | |
| 81 } | |
| 82 function replayUntilNextBufferDataCall(offset) | |
| 83 { | |
| 84 var bufferDataCalls = ["bindBuffer", "bufferData", "bufferSubData"]; | |
| 85 var calls = traceLog.calls; | |
| 86 for (var i = offset, n = calls.length; i < n; ++i) { | |
| 87 var call = calls[i]; | |
| 88 if (bufferDataCalls.indexOf(call.functionName) !== -1) { | |
| 89 InspectorTest.CanvasAgent.replayTraceLog(traceLogId, i, didRepla
yTraceLog.bind(null, i)); | |
| 90 return; | |
| 91 } | |
| 92 } | |
| 93 InspectorTest.completeTest(); | |
| 94 } | |
| 95 function didReplayTraceLog(stepNo) | |
| 96 { | |
| 97 InspectorTest.addResult("\nReplayed call #" + stepNo); | |
| 98 InspectorTest.CanvasAgent.getResourceState(traceLogId, resourceIds["WebG
LBuffer@1"], didGetResourceState); | |
| 99 | |
| 100 function didGetResourceState(error, resourceState) | |
| 101 { | |
| 102 InspectorTest.assertTrue(!error && !!resourceState, "Unexpected erro
r: " + error); | |
| 103 var descriptor = InspectorTest.findResourceStateDescriptor(resourceS
tate, "bufferData"); | |
| 104 if (!descriptor) | |
| 105 InspectorTest.addResult("No bufferData available"); | |
| 106 else { | |
| 107 var remoteObject = descriptor.value && descriptor.value.remoteOb
ject; | |
| 108 if (!remoteObject) | |
| 109 InspectorTest.addResult("FAIL: Internal error in the protoco
l: no \"remoteObject\" property in a CallArgument"); | |
| 110 else { | |
| 111 var obj = InspectorTest.runtimeModel.createRemoteObject(remo
teObject); | |
| 112 obj.getOwnProperties(didGetOwnProperties.bind(null, descript
or.value.description)); | |
| 113 return; | |
| 114 } | |
| 115 } | |
| 116 replayUntilNextBufferDataCall(stepNo + 1); | |
| 117 } | |
| 118 | |
| 119 function didGetOwnProperties(description, properties) | |
| 120 { | |
| 121 function formatNumber(value) | |
| 122 { | |
| 123 if (/^Uint16Array/.test(description)) { | |
| 124 var str = "0000" + Number(value || 0).toString(16); | |
| 125 str = str.replace(/^0+(.{4,})$/, "$1"); | |
| 126 return "0x" + str; | |
| 127 } | |
| 128 return value; | |
| 129 } | |
| 130 | |
| 131 var result = []; | |
| 132 for (var i = 0; i < properties.length; ++i) { | |
| 133 var index = properties[i].name; | |
| 134 var value = properties[i].value; | |
| 135 if (!isNaN(index)) | |
| 136 result[+index] = formatNumber(value && value.value); | |
| 137 } | |
| 138 InspectorTest.addResult("bufferData: " + description + ": [" + resul
t.join(", ") + "]"); | |
| 139 replayUntilNextBufferDataCall(stepNo + 1); | |
| 140 } | |
| 141 } | |
| 142 } | |
| 143 | |
| 144 </script> | |
| 145 </head> | |
| 146 <body onload="runTest()"> | |
| 147 <p> | |
| 148 Tests WebGLBuffer data state during the replay. | |
| 149 </p> | |
| 150 <canvas id="canvas"></canvas> | |
| 151 </body> | |
| 152 </html> | |
| OLD | NEW |