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 |