diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-06-05 17:22:31 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-06-05 17:22:31 -0700 |
commit | 459cd6a71c0dd1bcb15eaa69e9ffcab18a69f8dc (patch) | |
tree | 7bdb4de93603db9148ae0f94064794f3b93ca8d3 | |
parent | bdd0a5c6e878aa85493775d4c0bee95a380e4468 (diff) |
more preparations for prefetched parameters
-rw-r--r-- | src/proxyClient.js | 3 | ||||
-rw-r--r-- | src/proxyWorker.js | 5 | ||||
-rw-r--r-- | src/webGLClient.js | 8 | ||||
-rw-r--r-- | src/webGLWorker.js | 16 |
4 files changed, 31 insertions, 1 deletions
diff --git a/src/proxyClient.js b/src/proxyClient.js index 5adc2917..ff961f9c 100644 --- a/src/proxyClient.js +++ b/src/proxyClient.js @@ -29,7 +29,7 @@ var worker = new Worker('{{{ filename }}}.js'); var workerResponded = false; worker.onmessage = function worker_onmessage(event) { - //console.log(JSON.stringify(event.data)); + dump('client got ' + JSON.stringify(event.data) + '\n'); if (!workerResponded) { workerResponded = true; if (Module.setStatus) Module.setStatus(''); @@ -53,6 +53,7 @@ worker.onmessage = function worker_onmessage(event) { switch (data.op) { case 'getContext': { Module.ctx = Module.canvas.getContext(data.type); + if (data.type !== '2d') Module.glClient = new WebGLClient(); break; } case 'resize': { diff --git a/src/proxyWorker.js b/src/proxyWorker.js index a5115893..d4a2e0e8 100644 --- a/src/proxyWorker.js +++ b/src/proxyWorker.js @@ -141,6 +141,7 @@ onmessage = function onmessage(message) { } messageBuffer.push(message); } + dump('worker got ' + JSON.stringify(message.data) + '\n'); switch (message.data.target) { case 'document': { document.fireEvent(message.data.event); @@ -158,6 +159,10 @@ onmessage = function onmessage(message) { } else throw 'ey?'; break; } + case 'gl': { + Module.ctx.onmessage(message.data); + break; + } default: throw 'wha? ' + message.data.target; } }; diff --git a/src/webGLClient.js b/src/webGLClient.js index 8828f181..193d5dfa 100644 --- a/src/webGLClient.js +++ b/src/webGLClient.js @@ -1,2 +1,10 @@ // WebGLWorker client code +function WebGLClient() { + var data = {}; + ['MAX_VERTEX_ATTRIBS'].forEach(function(name) { + data[name] = Module.ctx.getParameter(Module.ctx[name]); + }); + worker.postMessage({ target: 'gl', op: 'setPrefetchedParameters', data: data }); +} + diff --git a/src/webGLWorker.js b/src/webGLWorker.js index 993d954d..a6b6b4d2 100644 --- a/src/webGLWorker.js +++ b/src/webGLWorker.js @@ -435,6 +435,22 @@ function WebGLWorker() { //========== var that = this; + + // Helpers + + this.onmessage = function(msg) { + dump('worker GL got ' + JSON.stringify(msg) + '\n'); + switch(msg.op) { + case 'setPrefetchedParameters': { + that.prefetchedParameters = msg.data; + break; + } + default: throw 'weird gl onmessage ' + JSON.stringify(msg); + } + }; + + // GL + function revname(name) { for (var x in that) if (that[x] === name) return x; return null; |