Merge remote-tracking branch 'origin/master'

This commit is contained in:
ed
2024-02-03 11:40:28 -05:00
264 changed files with 2116 additions and 1450 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ package vendor_gl
import "core:os"
import "core:fmt"
import "core:strings"
import "core:runtime"
import "base:runtime"
_ :: fmt
_ :: runtime
+1 -1
View File
@@ -2,7 +2,7 @@ package vendor_gl
#assert(size_of(bool) == size_of(u8))
import "core:runtime"
import "base:runtime"
import "core:fmt"
_ :: runtime
_ :: fmt
+1 -1
View File
@@ -8,7 +8,7 @@ package vendor_commonmark
import "core:c"
import "core:c/libc"
import "core:runtime"
import "base:runtime"
COMMONMARK_SHARED :: #config(COMMONMARK_SHARED, false)
BINDING_VERSION :: Version_Info{major = 0, minor = 30, patch = 2}
+2 -2
View File
@@ -2,8 +2,8 @@ package objc_Foundation
foreign import "system:Foundation.framework"
import "core:intrinsics"
import "core:runtime"
import "base:intrinsics"
import "base:runtime"
import "core:strings"
RunLoopMode :: ^String
+1 -1
View File
@@ -1,6 +1,6 @@
package objc_Foundation
import "core:intrinsics"
import "base:intrinsics"
@(objc_class="NSArray")
Array :: struct {
+2 -2
View File
@@ -1,7 +1,7 @@
package objc_Foundation
import "core:intrinsics"
import "core:builtin"
import "base:intrinsics"
import "base:builtin"
import "core:mem"
@(objc_class="NSBlock")
+1 -1
View File
@@ -1,7 +1,7 @@
package objc_Foundation
import "core:c"
import "core:intrinsics"
import "base:intrinsics"
FastEnumerationState :: struct #packed {
state: c.ulong,
+2 -2
View File
@@ -1,7 +1,7 @@
package objc_Foundation
import "core:builtin"
import "core:intrinsics"
import "base:builtin"
import "base:intrinsics"
KeyEquivalentModifierFlag :: enum UInteger {
CapsLock = 16, // Set if Caps Lock key is pressed.
+1 -1
View File
@@ -1,6 +1,6 @@
package objc_Foundation
import "core:intrinsics"
import "base:intrinsics"
methodSignatureForSelector :: proc "c" (obj: ^Object, selector: SEL) -> rawptr {
return msgSend(rawptr, obj, "methodSignatureForSelector:", selector)
+1 -1
View File
@@ -1,6 +1,6 @@
package objc_Foundation
import "core:intrinsics"
import "base:intrinsics"
@(private) msgSend :: intrinsics.objc_send
+2 -2
View File
@@ -1,8 +1,8 @@
package objc_Foundation
import "core:strings"
import "core:runtime"
import "core:intrinsics"
import "base:runtime"
import "base:intrinsics"
Rect :: struct {
using origin: Point,
+1 -1
View File
@@ -4,7 +4,7 @@ foreign import "system:Foundation.framework"
// NOTE: Most of our bindings are reliant on Cocoa (everything under appkit) so just unconditionally import it
@(require) foreign import "system:Cocoa.framework"
import "core:intrinsics"
import "base:intrinsics"
import "core:c"
IMP :: proc "c" (object: id, sel: SEL, #c_vararg args: ..any) -> id
+1 -1
View File
@@ -1,7 +1,7 @@
package objc_Metal
import NS "vendor:darwin/Foundation"
import "core:intrinsics"
import "base:intrinsics"
BOOL :: NS.BOOL
id :: ^NS.Object
+1 -1
View File
@@ -3,7 +3,7 @@ package objc_MetalKit
import NS "vendor:darwin/Foundation"
import MTL "vendor:darwin/Metal"
import CA "vendor:darwin/QuartzCore"
import "core:intrinsics"
import "base:intrinsics"
@(require)
foreign import "system:MetalKit.framework"
+1 -1
View File
@@ -2,7 +2,7 @@ package objc_QuartzCore
import NS "vendor:darwin/Foundation"
import MTL "vendor:darwin/Metal"
import "core:intrinsics"
import "base:intrinsics"
@(private)
msgSend :: intrinsics.objc_send
+1 -1
View File
@@ -2,7 +2,7 @@
//+vet !using-param
package fontstash
import "core:runtime"
import "base:runtime"
import "core:log"
import "core:os"
import "core:mem"
+2 -2
View File
@@ -1,7 +1,7 @@
package lua_5_1
import "core:intrinsics"
import "core:builtin"
import "base:intrinsics"
import "base:builtin"
import c "core:c/libc"
+2 -2
View File
@@ -1,7 +1,7 @@
package lua_5_2
import "core:intrinsics"
import "core:builtin"
import "base:intrinsics"
import "base:builtin"
import c "core:c/libc"
+2 -2
View File
@@ -1,7 +1,7 @@
package lua_5_3
import "core:intrinsics"
import "core:builtin"
import "base:intrinsics"
import "base:builtin"
import c "core:c/libc"
+2 -2
View File
@@ -1,7 +1,7 @@
package lua_5_4
import "core:intrinsics"
import "core:builtin"
import "base:intrinsics"
import "base:builtin"
import c "core:c/libc"
+1 -1
View File
@@ -1390,7 +1390,7 @@ CreateFramebuffer :: proc(ctx: ^nvg.Context, w, h: int, imageFlags: ImageFlags)
gl.GetIntegerv(gl.RENDERBUFFER_BINDING, &tempRBO)
imageFlags := imageFlags
incl(&imageFlags, ImageFlags { .FLIP_Y, .PREMULTIPLIED })
imageFlags += {.FLIP_Y, .PREMULTIPLIED}
fb.image = nvg.CreateImageRGBA(ctx, w, h, imageFlags, nil)
fb.texture = ImageHandle(ctx, fb.image)
fb.ctx = ctx
+1 -1
View File
@@ -344,7 +344,7 @@ Camera2D :: struct {
zoom: f32, // Camera zoom (scaling), should be 1.0f by default
}
// Vertex data definning a mesh
// Vertex data defining a mesh
// NOTE: Data stored in CPU memory (and GPU)
Mesh :: struct {
vertexCount: c.int, // Number of vertices stored in arrays
+1 -1
View File
@@ -23,7 +23,7 @@ package sdl2
import "core:c"
import "core:intrinsics"
import "base:intrinsics"
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
-13
View File
@@ -1,9 +1,6 @@
package sdl2
import "core:c"
import "core:intrinsics"
import "core:runtime"
_, _ :: intrinsics, runtime
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
@@ -19,16 +16,6 @@ FOURCC :: #force_inline proc "c" (A, B, C, D: u8) -> u32 {
}
stack_alloc :: proc "c" ($T: typeid, #any_int count: int) -> ^T {
return (^T)(intrinsics.alloca(size_of(T)*count))
}
stack_make :: proc "c" ($T: typeid/[]$E, #any_int count: int) -> T {
ptr := (^T)(intrinsics.alloca(size_of(T)*count))
return transmute(T)runtime.Raw_Slice{ptr, count}
}
stack_free :: proc "c" (ptr: rawptr) {}
malloc_func :: proc "c" (size: c.size_t) -> rawptr
calloc_func :: proc "c" (nmemb, size: c.size_t) -> rawptr
realloc_func :: proc "c" (mem: rawptr, size: c.size_t) -> rawptr
+3 -2
View File
@@ -64,7 +64,7 @@ foreign webgl {
ClearColor :: proc(r, g, b, a: f32) ---
ClearDepth :: proc(x: Enum) ---
ClearStencil :: proc(x: Enum) ---
ClearMask :: proc(r, g, b, a: bool) ---
ColorMask :: proc(r, g, b, a: bool) ---
CompileShader :: proc(shader: Shader) ---
CompressedTexImage2D :: proc(target: Enum, level: i32, internalformat: Enum, width, height: i32, border: i32, imageSize: int, data: rawptr) ---
@@ -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 ---
@@ -265,4 +266,4 @@ TexImage2DSlice :: proc "contextless" (target: Enum, level: i32, internalformat:
}
TexSubImage2DSlice :: proc "contextless" (target: Enum, level: i32, xoffset, yoffset, width, height: i32, format, type: Enum, slice: $S/[]$E) {
TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, len(slice)*size_of(E), raw_data(slice))
}
}
+2 -2
View File
@@ -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
}
+1 -1
View File
@@ -1,7 +1,7 @@
//+build !js
package wasm_js_interface
import "core:runtime"
import "base:runtime"
get_element_value_string :: proc "contextless" (id: string, buf: []byte) -> string {
+2 -2
View File
@@ -2,7 +2,7 @@
package wasm_js_interface
import "core:mem"
import "core:intrinsics"
import "base:intrinsics"
PAGE_SIZE :: 64 * 1024
page_alloc :: proc(page_count: int) -> (data: []byte, err: mem.Allocator_Error) {
@@ -24,7 +24,7 @@ page_allocator :: proc() -> mem.Allocator {
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)
+28 -27
View File
@@ -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);
@@ -395,7 +396,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);
},
@@ -538,8 +539,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);
@@ -645,7 +646,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]),
@@ -669,7 +670,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);
@@ -735,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);
@@ -791,7 +792,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 +823,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();
@@ -855,7 +856,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 */
@@ -982,10 +983,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) => {
@@ -1038,7 +1039,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();
@@ -1083,7 +1084,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;
@@ -1451,11 +1452,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);
}
},
@@ -1529,12 +1530,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: () => {
@@ -1547,9 +1548,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,
cancelabe: (options_bits & (1<<1)) !== 0,
composed: (options_bits & (1<<2)) !== 0,
bubbles: (options_bits & (1<<0)) !== 0,
cancelable: (options_bits & (1<<1)) !== 0,
composed: (options_bits & (1<<2)) !== 0,
};
let element = getElement(id);
@@ -1603,7 +1604,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);
@@ -1707,4 +1708,4 @@ window.odin = {
setupDefaultImports: odinSetupDefaultImports,
runWasm: runWasm,
};
})();
})();