aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-06-05 17:22:31 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-06-05 17:22:31 -0700
commit459cd6a71c0dd1bcb15eaa69e9ffcab18a69f8dc (patch)
tree7bdb4de93603db9148ae0f94064794f3b93ca8d3
parentbdd0a5c6e878aa85493775d4c0bee95a380e4468 (diff)
more preparations for prefetched parameters
-rw-r--r--src/proxyClient.js3
-rw-r--r--src/proxyWorker.js5
-rw-r--r--src/webGLClient.js8
-rw-r--r--src/webGLWorker.js16
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;