From 84a8e174825d48841949a847255668beb5f1c017 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Nov 2023 14:22:17 +0100 Subject: [PATCH 01/15] Correct some typos in runtime.js --- vendor/wasm/js/runtime.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 78fdcca18..e2f2034cf 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1529,12 +1529,12 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { event_stop_propagation: () => { if (event_temp_data && event_temp_data.event) { - event_temp_data.event.eventStopPropagation(); + event_temp_data.event.stopPropagation(); } }, event_stop_immediate_propagation: () => { if (event_temp_data && event_temp_data.event) { - event_temp_data.event.eventStopImmediatePropagation(); + event_temp_data.event.stopImmediatePropagation(); } }, event_prevent_default: () => { @@ -1548,7 +1548,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { let name = wasmMemoryInterface.loadString(name_ptr, name_len); let options = { bubbles: (options_bits & (1<<0)) !== 0, - cancelabe: (options_bits & (1<<1)) !== 0, + cancelable: (options_bits & (1<<1)) !== 0, composed: (options_bits & (1<<2)) !== 0, }; @@ -1707,4 +1707,4 @@ window.odin = { setupDefaultImports: odinSetupDefaultImports, runWasm: runWasm, }; -})(); \ No newline at end of file +})(); From 0df7fe4247e43dd4441b81e73153c3275ca383c2 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Nov 2023 14:23:41 +0100 Subject: [PATCH 02/15] Fix alignment --- vendor/wasm/js/runtime.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index e2f2034cf..68636dd31 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1547,9 +1547,9 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { let id = wasmMemoryInterface.loadString(id_ptr, id_len); let name = wasmMemoryInterface.loadString(name_ptr, name_len); let options = { - bubbles: (options_bits & (1<<0)) !== 0, + bubbles: (options_bits & (1<<0)) !== 0, cancelable: (options_bits & (1<<1)) !== 0, - composed: (options_bits & (1<<2)) !== 0, + composed: (options_bits & (1<<2)) !== 0, }; let element = getElement(id); From e0ecae66fd8c254a86da8bf7f0a3c81ce20c8dc5 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Nov 2023 14:35:48 +0100 Subject: [PATCH 03/15] Fix set_element_value_string parameter name --- vendor/wasm/js/runtime.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 68636dd31..6a0146f4a 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1603,7 +1603,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { element.value = value; } }, - set_element_value_string: (id_ptr, id_len, value_ptr, value_id) => { + set_element_value_string: (id_ptr, id_len, value_ptr, value_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); let value = wasmMemoryInterface.loadString(value_ptr, value_len); let element = getElement(id); From 1e726bb3e04cc980e9edf805185c917c3e01a55d Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 25 Nov 2023 16:07:36 +0100 Subject: [PATCH 04/15] Fix scroll and visibilitychange event handling --- vendor/wasm/js/runtime.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 6a0146f4a..041fb949a 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1451,11 +1451,11 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { wmi.storeF64(off(8), e.deltaY); wmi.storeF64(off(8), e.deltaZ); wmi.storeU32(off(4), e.deltaMode); - } else if (e instanceof Event) { - if ('scrollX' in e) { - wmi.storeF64(off(8), e.scrollX); - wmi.storeF64(off(8), e.scrollY); - } + } else if (e.type === 'scroll') { + wmi.storeF64(off(8), window.scrollX); + wmi.storeF64(off(8), window.scrollY); + } else if (e.type === 'visibilitychange') { + wmi.storeU8(off(1), !document.hidden); } }, From c2c89e54a55a2e639509d3155d9eadfc76bbe121 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 6 Jan 2024 21:03:27 +0100 Subject: [PATCH 05/15] Correct spelling of FramebufferRenderbuffer --- vendor/wasm/js/runtime.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 041fb949a..07d99a45c 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -538,8 +538,8 @@ class WebGLInterface { Flush: () => { this.ctx.flush(); }, - FramebufferRenderBuffer: (target, attachment, renderbuffertarget, renderbuffer) => { - this.ctx.framebufferRenderBuffer(target, attachment, renderbuffertarget, this.renderbuffers[renderbuffer]); + FramebufferRenderbuffer: (target, attachment, renderbuffertarget, renderbuffer) => { + this.ctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, this.renderbuffers[renderbuffer]); }, FramebufferTexture2D: (target, attachment, textarget, texture, level) => { this.ctx.framebufferTexture2D(target, attachment, textarget, this.textures[texture], level); From 909a5016ee31803640a4cb0843cd74d55f3c0451 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 6 Jan 2024 22:17:01 +0100 Subject: [PATCH 06/15] Correct glIsEnabled in wasm.webgl --- vendor/wasm/WebGL/webgl.odin | 1 + vendor/wasm/js/runtime.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/vendor/wasm/WebGL/webgl.odin b/vendor/wasm/WebGL/webgl.odin index d1db3146f..05bf34344 100644 --- a/vendor/wasm/WebGL/webgl.odin +++ b/vendor/wasm/WebGL/webgl.odin @@ -117,6 +117,7 @@ foreign webgl { Hint :: proc(target: Enum, mode: Enum) --- IsBuffer :: proc(buffer: Buffer) -> bool --- + IsEnabled :: proc(cap: Enum) -> bool --- IsFramebuffer :: proc(framebuffer: Framebuffer) -> bool --- IsProgram :: proc(program: Program) -> bool --- IsRenderbuffer :: proc(renderbuffer: Renderbuffer) -> bool --- diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 07d99a45c..1508d7a7c 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -645,7 +645,7 @@ class WebGLInterface { IsBuffer: (buffer) => this.ctx.isBuffer(this.buffers[buffer]), - IsEnabled: (enabled) => this.ctx.isEnabled(this.enableds[enabled]), + IsEnabled: (cap) => this.ctx.isEnabled(cap), IsFramebuffer: (framebuffer) => this.ctx.isFramebuffer(this.framebuffers[framebuffer]), IsProgram: (program) => this.ctx.isProgram(this.programs[program]), IsRenderbuffer: (renderbuffer) => this.ctx.isRenderbuffer(this.renderbuffers[renderbuffer]), From 0580eebd2aea0e6609c7a0a004fb2dcf5b13d70e Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 6 Jan 2024 22:28:24 +0100 Subject: [PATCH 07/15] Pass `height` to `webgl.readPixels` --- vendor/wasm/js/runtime.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 1508d7a7c..40ae405d7 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -669,7 +669,7 @@ class WebGLInterface { ReadnPixels: (x, y, width, height, format, type, bufSize, data) => { - this.ctx.readPixels(x, y, width, format, type, this.mem.loadBytes(data, bufSize)); + this.ctx.readPixels(x, y, width, height, format, type, this.mem.loadBytes(data, bufSize)); }, RenderbufferStorage: (target, internalformat, width, height) => { this.ctx.renderbufferStorage(target, internalformat, width, height); From da56a75ad61bfeeab325358e95a58d429ba8ec30 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 7 Jan 2024 16:49:12 +0100 Subject: [PATCH 08/15] Fix WebGLInterface function names --- vendor/wasm/js/runtime.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 40ae405d7..d30a44d68 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -791,7 +791,7 @@ class WebGLInterface { /* Framebuffer objects */ BlitFramebuffer: (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter) => { this.assertWebGL2(); - this.ctx.glitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + this.ctx.blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); }, FramebufferTextureLayer: (target, attachment, texture, level, layer) => { this.assertWebGL2(); @@ -822,7 +822,7 @@ class WebGLInterface { TexStorage3D: (target, levels, internalformat, width, height, depth) => { this.assertWebGL2(); - this.ctx.texStorage3D(target, level, internalformat, width, heigh, depth); + this.ctx.texStorage3D(target, levels, internalformat, width, height, depth); }, TexImage3D: (target, level, internalformat, width, height, depth, border, format, type, size, data) => { this.assertWebGL2(); From 2017ebc1b5ce42d6cf546506ed26d562d8ced8cb Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 7 Jan 2024 16:49:51 +0100 Subject: [PATCH 09/15] Fix copyTexSubImage2D and copyTexSubImage3D method calls --- vendor/wasm/js/runtime.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index d30a44d68..1eeb01cf2 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -395,7 +395,7 @@ class WebGLInterface { this.ctx.copyTexImage2D(target, level, internalformat, x, y, width, height, border); }, CopyTexSubImage2D: (target, level, xoffset, yoffset, x, y, width, height) => { - this.ctx.copyTexImage2D(target, level, xoffset, yoffset, x, y, width, height); + this.ctx.copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); }, @@ -855,7 +855,7 @@ class WebGLInterface { CopyTexSubImage3D: (target, level, xoffset, yoffset, zoffset, x, y, width, height) => { this.assertWebGL2(); - this.ctx.copyTexImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + this.ctx.copyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); }, /* Programs and shaders */ @@ -1038,7 +1038,7 @@ class WebGLInterface { }, BindSampler: (unit, sampler) => { this.assertWebGL2(); - this.ctx.bindSampler(unit, this.samplers[Sampler]); + this.ctx.bindSampler(unit, this.samplers[sampler]); }, SamplerParameteri: (sampler, pname, param) => { this.assertWebGL2(); From 0bf1b6c2f1721c5dcd2b7a37f54d832fb2c443b1 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 7 Jan 2024 20:19:44 +0100 Subject: [PATCH 10/15] Fix typo in WebGLInterface class --- vendor/wasm/js/runtime.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 1eeb01cf2..5fe526758 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -982,10 +982,10 @@ class WebGLInterface { }, DeleteQuery: (id) => { this.assertWebGL2(); - let obj = this.querys[id]; + let obj = this.queries[id]; if (obj && id != 0) { this.ctx.deleteQuery(obj); - this.querys[id] = null; + this.queries[id] = null; } }, IsQuery: (query) => { @@ -1083,7 +1083,7 @@ class WebGLInterface { /* Transform Feedback */ CreateTransformFeedback: () => { this.assertWebGL2(); - let transformFeedback = this.ctx.createtransformFeedback(); + let transformFeedback = this.ctx.createTransformFeedback(); let id = this.getNewId(this.transformFeedbacks); transformFeedback.name = id; this.transformFeedbacks[id] = transformFeedback; From 8de7d2f18f7655e02d148223b7f84622f25f6cd1 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sun, 7 Jan 2024 22:25:27 +0100 Subject: [PATCH 11/15] Hoist STRING_SIZE constant --- vendor/wasm/js/runtime.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 5fe526758..dd962e50f 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -13,6 +13,8 @@ function stripNewline(str) { return str.replace(/\n/, ' ') } +const STRING_SIZE = 2*4; + class WasmMemoryInterface { constructor() { this.memory = null; @@ -204,7 +206,6 @@ class WebGLInterface { } } getSource(shader, strings_ptr, strings_length) { - const STRING_SIZE = 2*4; let source = ""; for (let i = 0; i < strings_length; i++) { let ptr = this.mem.loadPtr(strings_ptr + i*STRING_SIZE); From 190103883caf45093670b9651f0a0a79c2690782 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Tue, 16 Jan 2024 21:45:52 +0100 Subject: [PATCH 12/15] Fix uniform matrix functions in WebGLInterface --- vendor/wasm/js/runtime.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index dd962e50f..f5ca325f8 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -736,11 +736,11 @@ class WebGLInterface { UniformMatrix2fv: (location, addr) => { let array = this.mem.loadF32Array(addr, 2*2); - this.ctx.uniformMatrix4fv(this.uniforms[location], false, array); + this.ctx.uniformMatrix2fv(this.uniforms[location], false, array); }, UniformMatrix3fv: (location, addr) => { let array = this.mem.loadF32Array(addr, 3*3); - this.ctx.uniformMatrix4fv(this.uniforms[location], false, array); + this.ctx.uniformMatrix3fv(this.uniforms[location], false, array); }, UniformMatrix4fv: (location, addr) => { let array = this.mem.loadF32Array(addr, 4*4); From 9cb02aa51d45bceb31aac658fa772e89fa3b7ae9 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 18 Jan 2024 10:26:43 +0100 Subject: [PATCH 13/15] Add missing Resize_Non_Zeroed case to page allocator --- vendor/wasm/js/memory_js.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/wasm/js/memory_js.odin b/vendor/wasm/js/memory_js.odin index cdeb58128..fbb9a0f54 100644 --- a/vendor/wasm/js/memory_js.odin +++ b/vendor/wasm/js/memory_js.odin @@ -21,7 +21,7 @@ page_allocator :: proc() -> mem.Allocator { old_memory: rawptr, old_size: int, location := #caller_location) -> ([]byte, mem.Allocator_Error) { switch mode { - case .Alloc, .Alloc_Non_Zeroed: + case .Alloc, .Alloc_Non_Zeroed, .Resize_Non_Zeroed: assert(size % PAGE_SIZE == 0) return page_alloc(size/PAGE_SIZE) case .Resize, .Free, .Free_All, .Query_Info: From a263da0bbe0caac92d58dba0bb516d92eaa6115e Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 18 Jan 2024 10:27:09 +0100 Subject: [PATCH 14/15] Fix window_get_scroll proc not returning loaded values --- vendor/wasm/js/dom.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/dom.odin b/vendor/wasm/js/dom.odin index 2662c4201..3a8bd0ac4 100644 --- a/vendor/wasm/js/dom.odin +++ b/vendor/wasm/js/dom.odin @@ -70,7 +70,7 @@ window_get_scroll :: proc "contextless" () -> (x, y: f64) { @(link_name="window_get_scroll") _window_get_scroll :: proc(scroll: ^[2]f64) --- } - scroll := [2]f64{x, y} + scroll: [2]f64 _window_get_scroll(&scroll) - return + return scroll.x, scroll.y } From b0aa08f85b206397db6b4891ef3607c79cd75da1 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Thu, 18 Jan 2024 10:33:40 +0100 Subject: [PATCH 15/15] Correct wasm page_allocator switch cases --- vendor/wasm/js/memory_js.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/js/memory_js.odin b/vendor/wasm/js/memory_js.odin index fbb9a0f54..8e4977ee4 100644 --- a/vendor/wasm/js/memory_js.odin +++ b/vendor/wasm/js/memory_js.odin @@ -21,10 +21,10 @@ page_allocator :: proc() -> mem.Allocator { old_memory: rawptr, old_size: int, location := #caller_location) -> ([]byte, mem.Allocator_Error) { switch mode { - case .Alloc, .Alloc_Non_Zeroed, .Resize_Non_Zeroed: + case .Alloc, .Alloc_Non_Zeroed: assert(size % PAGE_SIZE == 0) return page_alloc(size/PAGE_SIZE) - case .Resize, .Free, .Free_All, .Query_Info: + case .Resize, .Free, .Free_All, .Query_Info, .Resize_Non_Zeroed: return nil, .Mode_Not_Implemented case .Query_Features: set := (^mem.Allocator_Mode_Set)(old_memory)