From: Brendan Hansen Date: Sat, 14 May 2022 20:54:01 +0000 (-0500) Subject: module updates; better build files X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=1a19373de4d47a55454dcc53ccbc103d1beaefa5;p=onyx.git module updates; better build files --- diff --git a/build.bat b/build.bat index edb07682..41d2ef9b 100644 --- a/build.bat +++ b/build.bat @@ -22,11 +22,11 @@ del *.ilk > NUL 2> NUL del *.obj > NUL 2> NUL del misc\icon_resource.res -REM Compile the onyxrun tool +REM Compile the onyx-run tool set SOURCE_FILES=src/onyxrun.c src/wasm_runtime.c rc.exe misc/icon_resource.rc -cl.exe %FLAGS% /Iinclude /std:c17 /TC %SOURCE_FILES% /link /IGNORE:4217 %LINK_OPTIONS% /DEBUG /OUT:onyxrun.exe /incremental:no /opt:ref /subsystem:console misc\icon_resource.res +cl.exe %FLAGS% /Iinclude /std:c17 /TC %SOURCE_FILES% /link /IGNORE:4217 %LINK_OPTIONS% /DEBUG /OUT:onyx-run.exe /incremental:no /opt:ref /subsystem:console misc\icon_resource.res del *.pdb > NUL 2> NUL del *.ilk > NUL 2> NUL diff --git a/build.sh b/build.sh index ae07d20b..ff19219b 100755 --- a/build.sh +++ b/build.sh @@ -62,12 +62,17 @@ if [ ! -z "$ENABLE_BUNDLING_WASMER" ]; then INCLUDES="$INCLUDES -I$WASMER_INCLUDE_DIR" if [ ! -f "$CORE_DIR/lib/libwasmer.so" ]; then + echo "Copying libwasmer to $CORE_DIR/lib (first install)" + sudo mkdir -p "$CORE_DIR/lib" + sudo mkdir -p "$CORE_DIR/include" - echo "Copying libwasmer to $CORE_DIR/lib (first install)" # sudo cp "$WASMER_LIBRARY_DIR/libiwasm.so" "$CORE_DIR/lib/libiwasm.so" sudo cp "$WASMER_LIBRARY_DIR/libwasmer.so" "$CORE_DIR/lib/libwasmer.so" sudo cp "$WASMER_LIBRARY_DIR/libwasmer.a" "$CORE_DIR/lib/libwasmer.a" + + sudo cp "include/onyx_library.h" "$CORE_DIR/include/onyx_library.h" + sudo cp "lib/common/include/wasm.h" "$CORE_DIR/include/wasm.h" fi fi @@ -97,11 +102,11 @@ sudo cp ./bin/onyx "$BIN_DIR/onyx" if [ ! -z "$ENABLE_BUNDLING_WASMER" ]; then C_FILES="onyxrun wasm_runtime" - TARGET="./bin/onyxrun" + TARGET="./bin/onyx-run" compile echo "Installing onyxrun executable" - sudo cp ./bin/onyxrun "$BIN_DIR/onyxrun" + sudo cp ./bin/onyx-run "$BIN_DIR/onyx-run" $CC -shared -fpic -I include -I lib/common/include src/onyx_runtime.c -o onyx_runtime.so -lpthread sudo mv "./onyx_runtime.so" "$CORE_DIR/lib/onyx_runtime.so" diff --git a/core/runtime/onyx_run.onyx b/core/runtime/onyx_run.onyx index 2efe9526..3a25ca42 100644 --- a/core/runtime/onyx_run.onyx +++ b/core/runtime/onyx_run.onyx @@ -6,6 +6,7 @@ use package core #local { __stdout: os.File; + __stderr: os.File; __stdin: os.File; } @@ -14,6 +15,10 @@ __output_string :: (s: str) -> u32 { return wrote; } +__output_error :: (s: str) -> u32 { + err, wrote := io.stream_write(^__stderr, s); + return wrote; +} __read_from_input :: (buffer: [] u8) -> i32 { err, read := io.stream_read(^__stdin, buffer); @@ -44,6 +49,12 @@ __read_from_input :: (buffer: [] u8) -> i32 { .{ ^fs.__file_stream_vtable }, .{ fd }, }; + + __file_get_standard(2, ^fd); + __stderr = .{ + .{ ^fs.__file_stream_vtable }, + .{ fd }, + }; __file_get_standard(0, ^fd); __stdin = .{ diff --git a/core/std.onyx b/core/std.onyx index 8c888b77..c32ea1da 100644 --- a/core/std.onyx +++ b/core/std.onyx @@ -19,7 +19,6 @@ package core #load "./hash" #load "./string" -#load "./string/builder" #load "./string/reader" #load "./string/buffer" diff --git a/core/stdio.onyx b/core/stdio.onyx index 7f872596..f859943e 100644 --- a/core/stdio.onyx +++ b/core/stdio.onyx @@ -29,6 +29,7 @@ println :: (x) => { print("\n"); } +// Standard formatted print. printf :: (format: str, va: ..any) { flush :: (_, to_output) => { io.write(^stdio.print_writer, to_output); @@ -40,6 +41,20 @@ printf :: (format: str, va: ..any) { print(conv.format_va(buffer, format, va, .{null, flush})); } +// Print to standard error, if available. +#if #defined((package runtime).__output_error) { + eprintf :: (format: str, va: ..any) -> str { + flush :: (_, to_output) => { + (package runtime).__output_error(to_output); + return true; + } + + buffer: [1024] u8; + print(conv.format_va(buffer, format, va, .{null, flush})); + } +} + +// Print to a dynamically allocated string. aprintf :: (format: str, va: ..any) -> str { buffer: [8196] u8; out := conv.format_va(buffer, format, va); diff --git a/core/string.onyx b/core/string.onyx index d9b57b31..682aa322 100644 --- a/core/string.onyx +++ b/core/string.onyx @@ -187,6 +187,8 @@ ends_with :: (s: str, suffix: str) -> bool { return true; } +is_empty :: macro (s: str) => s.count == 0 || s.data == null; + strip_whitespace :: #match { (s: ^str) { strip_leading_whitespace(s); strip_trailing_whitespace(s); }, (s: str) => s |> strip_leading_whitespace() |> strip_trailing_whitespace() diff --git a/core/string/builder.onyx b/core/string/builder.onyx deleted file mode 100644 index 7ff03293..00000000 --- a/core/string/builder.onyx +++ /dev/null @@ -1,76 +0,0 @@ -package core.string.builder - -// DEPRECATED: This package is deprecated in favor of using -// an io.DynamicStringStream with an io.Writer. - -#if false { - -#local array :: package core.array -#local string :: package core.string -#local conv :: package core.conv - -Builder :: struct { - data : [..] u8; -} - -make :: (initial_cap := 4, alloc := context.allocator) -> Builder { - builder : Builder; - array.init(^builder.data, initial_cap, allocator = alloc); - - return builder; -} - -clear :: (use sb: ^Builder) -> ^Builder { - data.count = 0; - return sb; -} - -add_str :: (use sb: ^Builder, s: str) -> ^Builder { - len_total := data.count + s.count; - - if data.capacity < len_total { - if !array.ensure_capacity(^data, len_total) do return sb; - } - - for i: 0 .. s.count do data[data.count + i] = s[i]; - data.count += s.count; - return sb; -} - -add_cstr :: (use sb: ^Builder, cstring: cstr) -> ^Builder { - s := string.from_cstr(cstring); - return add_str(sb, s); -} - -add_i64 :: (use sb: ^Builder, n: i64, base: u64 = 10) -> ^Builder { - buf : [256] u8; - s := conv.i64_to_str(n, base, buf[0 .. 256]); - return add_str(sb, s); -} - -add_f64 :: (use sb: ^Builder, f: f64) -> ^Builder { - buf : [256] u8; - s := conv.f64_to_str(f, buf[0 .. 256]); - return add_str(sb, s); -} - -add_bool :: (use sb: ^Builder, b: bool) -> ^Builder { - if b do return add_str(sb, "true"); - else do return add_str(sb, "false"); - - return sb; -} - -append :: #match { - add_str, - add_cstr, - add_i64, - add_f64, - add_bool, -} - -to_str :: (use sb: ^Builder) -> str { - return str.{ data.data, data.count }; -} - -} \ No newline at end of file diff --git a/modules/glfw3/build.onyx b/modules/glfw3/build.onyx index 50fa0eca..fb47c85e 100644 --- a/modules/glfw3/build.onyx +++ b/modules/glfw3/build.onyx @@ -1,13 +1,18 @@ #load "core/std" #load "scripts/c_binding" +#load "scripts/c_library" #load "./module" use package core use package c_binding main :: () { + path := module_path(#file); + + c_file_path := string.concat(path, "onyx_glfw3.c"); + result := build_c_binding(.{ - output_file = "modules/glfw3/onyx_glfw3.c", + output_file = c_file_path, foreign_block = (package glfw3).foreign_block, cast_map = .[ @@ -85,4 +90,12 @@ main :: () { } else { println("Sucessfully made glfw3.c"); } + + result = compile_c_file(c_file_path, string.concat(path, "onyx_glfw3.so"), libraries=.["glfw"]); + if !result { + println("Failed to compile glfw3.c"); + os.exit(1); + } else { + println("Successfully made onyx_glfw3.so"); + } } diff --git a/modules/glfw3/build.sh b/modules/glfw3/build.sh deleted file mode 100755 index b7b38863..00000000 --- a/modules/glfw3/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# To be run from the project root - -onyx run modules/glfw3/build --generate-foreign-info -gcc -O2 -shared -fPIC ./modules/glfw3/onyx_glfw3.c -I include -I lib/common/include -lglfw -o modules/glfw3/onyx_glfw3.so \ No newline at end of file diff --git a/modules/glfw3/onyx_glfw3.so b/modules/glfw3/onyx_glfw3.so index dd2da0c0..168d7223 100755 Binary files a/modules/glfw3/onyx_glfw3.so and b/modules/glfw3/onyx_glfw3.so differ diff --git a/modules/http/headers.onyx b/modules/http/headers.onyx index 6205d45c..2151ac55 100644 --- a/modules/http/headers.onyx +++ b/modules/http/headers.onyx @@ -8,6 +8,7 @@ HTTP_Header :: enum { Server; Accept; AcceptEncoding; + Location; } header_from_str :: (s: str) -> (HTTP_Header, success: bool) { @@ -18,6 +19,7 @@ header_from_str :: (s: str) -> (HTTP_Header, success: bool) { case "transfer-encoding" do return .TransferEncoding, true; case "accept" do return .Accept, true; case "accept-encoding" do return .AcceptEncoding, true; + case "location" do return .Location, true; case #default do return ~~ -1, false; } } @@ -31,6 +33,7 @@ header_from_str :: (s: str) -> (HTTP_Header, success: bool) { case .Server do return "Server"; case .Accept do return "Accept"; case .AcceptEncoding do return "Accept-Encoding"; + case .Location do return "Location"; case #default do return ""; } } @@ -77,6 +80,7 @@ HTTP_Headers :: struct { expect: bool; chunked: bool; accept: MediaType; + location: str; custom_entries: Map(str, str); parse_header_line :: (use this: ^HTTP_Headers, line_: [] u8) -> bool { @@ -136,6 +140,11 @@ HTTP_Headers :: struct { return true; } + case .Location { + location = content |> string.strip_whitespace(); + return true; + } + case .Server { return true; } diff --git a/modules/ncurses/build.onyx b/modules/ncurses/build.onyx index ccdf0321..66c540ea 100644 --- a/modules/ncurses/build.onyx +++ b/modules/ncurses/build.onyx @@ -1,13 +1,18 @@ #load "core/std" #load "scripts/c_binding" +#load "scripts/c_library" #load "./module" use package core use package c_binding main :: () { + path := module_path(#file); + + c_file_path := string.concat(path, "ncurses.c"); + result := build_c_binding(.{ - output_file = "modules/ncurses/ncurses.c", + output_file = c_file_path, foreign_block = (package ncurses).foreign_block, cast_map = .[ @@ -26,6 +31,8 @@ void __get_beg_yx(WINDOW *w, int *y, int *x) { getbegyx(w, *y, *x); } void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); } """ ], + + custom_implementations = .[], }); if !result { @@ -34,4 +41,12 @@ void __get_max_yx(WINDOW *w, int *y, int *x) { getmaxyx(w, *y, *x); } } else { println("Sucessfully made ncurses.c"); } + + result = compile_c_file(c_file_path, string.concat(path, "onyx_ncurses.so"), libraries=.["ncurses"]); + if !result { + println("Failed to compile ncurses.c"); + os.exit(1); + } else { + println("Sucessfully made onyx_ncurses.so"); + } } \ No newline at end of file diff --git a/modules/ncurses/build.sh b/modules/ncurses/build.sh deleted file mode 100755 index 2412b380..00000000 --- a/modules/ncurses/build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -onyx run modules/ncurses/build.onyx --generate-foreign-info -gcc -shared -fPIC -I include -I lib/common/include -O2 modules/ncurses/ncurses.c -o modules/ncurses/onyx_ncurses.so -lncurses diff --git a/modules/ncurses/ncurses.c b/modules/ncurses/ncurses.c index 275ef36d..efc67a62 100644 --- a/modules/ncurses/ncurses.c +++ b/modules/ncurses/ncurses.c @@ -1,3 +1,6 @@ +// +// THIS FILE WAS AUTOMATICALLY GENERATED. +// #include "ncurses.h" diff --git a/modules/ncurses/onyx_ncurses.so b/modules/ncurses/onyx_ncurses.so index 3ba7d3cf..b92ce9e5 100755 Binary files a/modules/ncurses/onyx_ncurses.so and b/modules/ncurses/onyx_ncurses.so differ diff --git a/modules/opengles/build.bat b/modules/opengles/build.bat index 37663769..d1a8d4fd 100644 --- a/modules/opengles/build.bat +++ b/modules/opengles/build.bat @@ -2,7 +2,7 @@ call "tools\dev.bat" -cl /MT /std:c17 /TC /I include /I lib/common/include /IC:\dev\heartbreak\lib\common\include /D_USRDLL /D_WINDLL modules\opengles\onyx_opengles.c /link opengl32.lib ws2_32.lib Advapi32.lib userenv.lib bcrypt.lib libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib /DLL /OUT:onyx_opengles.dll +cl /MT /std:c17 /TC /I include /I lib/common/include /IC:\dev\heartbreak\lib\common\include /D_USRDLL /D_WINDLL modules\opengles\opengles.c /link opengl32.lib ws2_32.lib Advapi32.lib userenv.lib bcrypt.lib libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib /DLL /OUT:onyx_opengles.dll del onyx_opengles.obj del onyx_opengles.lib diff --git a/modules/opengles/build.onyx b/modules/opengles/build.onyx new file mode 100644 index 00000000..39d26b5d --- /dev/null +++ b/modules/opengles/build.onyx @@ -0,0 +1,54 @@ +#load "core/std" +#load "scripts/c_binding" +#load "scripts/c_library" +#load "./module" + +use package core +use package c_binding + +main :: () { + path := module_path(#file); + + c_file_path := string.concat(path, "opengles.c"); + + result := build_c_binding(.{ + output_file = c_file_path, + foreign_block = (package opengles).foreign_block, + + cast_map = .[], + name_map = ((name) => aprintf("glad_{}", name)), + + preamble = .[ +""" +#define GLAD_GLES2_IMPLEMENTATION +#include "glad.h" +""" + ], + + custom_implementations = .[ + .{ "glInit", + """ +ONYX_DEF(glInit, (LONG), ()) { + GLADloadfunc load_sym = (GLADloadfunc) params->data[0].of.i64; + gladLoadGLES2(load_sym); + return NULL; +} + """} + ], + }); + + if !result { + println("Failed to make opengles.c"); + os.exit(1); + } else { + println("Successfully made opengles.c"); + } + + result = compile_c_file(c_file_path, string.concat(path, "onyx_opengles.so")); + if !result { + println("Failed compile opengles.c"); + os.exit(1); + } else { + println("Successfully made onyx_opengles.so"); + } +} diff --git a/modules/opengles/build.sh b/modules/opengles/build.sh deleted file mode 100755 index 7702b256..00000000 --- a/modules/opengles/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -gcc -shared -fPIC modules/opengles/onyx_opengles.c -I include -I lib/common/include -o ./modules/opengles/onyx_opengles.so \ No newline at end of file diff --git a/modules/opengles/module.onyx b/modules/opengles/module.onyx index 95b29a70..476f03e8 100644 --- a/modules/opengles/module.onyx +++ b/modules/opengles/module.onyx @@ -2,11 +2,15 @@ package opengles use package core { cptr } -#library "onyx_opengles" +#if #defined((package runtime).Generated_Foreign_Info) { + foreign_block :: __foreign_block +} else { + #library "onyx_opengles" +} GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void -#foreign "onyx_opengles" { +#local __foreign_block :: #foreign "onyx_opengles" { // glInit MUST be called before any other GL calls, as it initializes all GL function pointers // using the load_function provided. Currently, the only supported library that provides this // is glfwGetLoadProcAddress. @@ -83,7 +87,7 @@ GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void glGetShaderInfoLog :: (shader: GLuint, bufSize: GLsizei, length: ^GLsizei, infoLog: ^GLchar) -> void --- glGetShaderPrecisionFormat :: (shadertype: GLenum, precisiontype: GLenum, range: ^GLint, precision: ^GLint) -> void --- glGetShaderSource :: (shader: GLuint, bufSize: GLsizei, length: ^GLsizei, source: ^GLchar) -> void --- - glGetString :: (name: GLenum) -> ^GLubyte --- + glGetString :: (name: GLenum) -> cptr(GLubyte) --- glGetTexParameterfv :: (target: GLenum, pname: GLenum, params: ^GLfloat) -> void --- glGetTexParameteriv :: (target: GLenum, pname: GLenum, params: ^GLint) -> void --- glGetUniformfv :: (program: GLuint, location: GLint, params: ^GLfloat) -> void --- @@ -217,7 +221,7 @@ GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void glClearBufferuiv :: (buffer: GLenum, drawbuffer: GLint, value: ^GLuint) -> void --- glClearBufferfv :: (buffer: GLenum, drawbuffer: GLint, value: ^GLfloat) -> void --- glClearBufferfi :: (buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> void --- - glGetStringi :: (name: GLenum, index: GLuint) -> ^GLubyte --- + glGetStringi :: (name: GLenum, index: GLuint) -> cptr(GLubyte) --- glCopyBufferSubData :: (readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> void --- glGetUniformIndices :: (program: GLuint, uniformCount: GLsizei, uniformNames: ^cptr(GLchar), uniformIndices: ^GLuint) -> void --- glGetActiveUniformsiv :: (program: GLuint, uniformCount: GLsizei, uniformIndices: ^GLuint, pname: GLenum, params: ^GLint) -> void --- @@ -227,13 +231,13 @@ GLGetProcAddress :: #distinct i64 // (name: cstr) -> ^void glUniformBlockBinding :: (program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> void --- glDrawArraysInstanced :: (mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> void --- glDrawElementsInstanced :: (mode: GLenum, count: GLsizei, type: GLenum, indices: rawptr, instancecount: GLsizei) -> void --- - glFenceSync :: (condition: GLenum, flags: GLbitfield) -> GLsync --- - glIsSync :: (sync: GLsync) -> GLboolean --- - glDeleteSync :: (sync: GLsync) -> void --- - glClientWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum --- - glWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> void --- + // glFenceSync :: (condition: GLenum, flags: GLbitfield) -> GLsync --- + // glIsSync :: (sync: GLsync) -> GLboolean --- + // glDeleteSync :: (sync: GLsync) -> void --- + // glClientWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum --- + // glWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> void --- glGetInteger64v :: (pname: GLenum, data: ^GLint64) -> void --- - glGetSynciv :: (sync: GLsync, pname: GLenum, bufSize: GLsizei, length: ^GLsizei, values: ^GLint) -> void --- + // glGetSynciv :: (sync: GLsync, pname: GLenum, bufSize: GLsizei, length: ^GLsizei, values: ^GLint) -> void --- glGetInteger64i_v :: (target: GLenum, index: GLuint, data: ^GLint64) -> void --- glGetBufferParameteri64v :: (target: GLenum, pname: GLenum, params: ^GLint64) -> void --- glGenSamplers :: (count: GLsizei, samplers: ^GLuint) -> void --- diff --git a/modules/opengles/onyx_opengles.c b/modules/opengles/onyx_opengles.c deleted file mode 100644 index d6cabd10..00000000 --- a/modules/opengles/onyx_opengles.c +++ /dev/null @@ -1,811 +0,0 @@ - -#define GLAD_GLES2_IMPLEMENTATION -#include "glad.h" - -#define ONYX_LIBRARY_NAME onyx_opengles -#include "onyx_library.h" - -#if defined(_WIN32) || defined(_WIN64) - // Why is Windows dumb? - #define alloca _alloca -#endif - -#define ONYX_GL_0(name) \ - ONYX_DEF(name, (), ()) { \ - glad_##name (); \ - return NULL; \ - } - -#define ONYX_GL_0_RET_INT(name) \ - ONYX_DEF(name, (), (INT)) { \ - results->data[0] = WASM_I32_VAL( glad_##name () ); \ - return NULL; \ - } - -#define ONYX_GL_INT_1(name) \ - ONYX_DEF(name, (INT), ()) { \ - glad_##name (params->data[0].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_1_RET_INT(name) \ - ONYX_DEF(name, (INT), (INT)) { \ - results->data[0] = WASM_I32_VAL( glad_##name (params->data[0].of.i32) ); \ - return NULL; \ - } - -#define ONYX_GL_INT_2(name) \ - ONYX_DEF(name, (INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_RET_INT(name) \ - ONYX_DEF(name, (INT, INT), (INT)) { \ - results->data[0] = WASM_I32_VAL( glad_##name (params->data[0].of.i32, params->data[1].of.i32) ); \ - return NULL; \ - } - -#define ONYX_GL_INT_3(name) \ - ONYX_DEF(name, (INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_4(name) \ - ONYX_DEF(name, (INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_5(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_6(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_7(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_8(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_9(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32, params->data[8].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_10(name) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, INT, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32, params->data[8].of.i32, params->data[9].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_FLOAT_1(name) \ - ONYX_DEF(name, (FLOAT), ()) { \ - glad_##name (params->data[0].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_FLOAT_INT(name) \ - ONYX_DEF(name, (FLOAT, INT), ()) { \ - glad_##name (params->data[0].of.f32, params->data[1].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_FLOAT_2(name) \ - ONYX_DEF(name, (FLOAT, FLOAT), ()) { \ - glad_##name (params->data[0].of.f32, params->data[1].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_FLOAT_4(name) \ - ONYX_DEF(name, (FLOAT, FLOAT, FLOAT, FLOAT), ()) { \ - glad_##name (params->data[0].of.f32, params->data[1].of.f32, params->data[2].of.f32, params->data[3].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_INT_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, (ptr_type *) ONYX_PTR(params->data[1].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_PTR_RET_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, PTR), (INT)) { \ - results->data[0] = WASM_I32_VAL(glad_##name (params->data[0].of.i32, (ptr_type *) ONYX_PTR(params->data[1].of.i32))); \ - return NULL; \ - } - -#define ONYX_GL_INT_PTR_RET_INT(name, ptr_type) \ - ONYX_DEF(name, (INT, PTR), (INT)) { \ - results->data[0] = WASM_I32_VAL(glad_##name (params->data[0].of.i32, (ptr_type *) ONYX_PTR(params->data[1].of.i32))); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, (ptr_type *) ONYX_PTR(params->data[2].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_3_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, (ptr_type *) ONYX_PTR(params->data[3].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_3_FAUX_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, (ptr_type *) (unsigned long long) params->data[3].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_4_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, (ptr_type *) ONYX_PTR(params->data[4].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_5_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, (ptr_type *) ONYX_PTR(params->data[5].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_6_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, (ptr_type *) ONYX_PTR(params->data[6].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_7_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, (ptr_type *) ONYX_PTR(params->data[7].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_8_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32, (ptr_type *) ONYX_PTR(params->data[8].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_9_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32, params->data[8].of.i32, (ptr_type *) ONYX_PTR(params->data[9].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_10_PTR(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, INT, INT, INT, INT, INT, INT, INT, INT, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, params->data[3].of.i32, params->data[4].of.i32, params->data[5].of.i32, params->data[6].of.i32, params->data[7].of.i32, params->data[8].of.i32, params->data[9].of.i32, (ptr_type *) ONYX_PTR(params->data[10].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_FLOAT(name) \ - ONYX_DEF(name, (INT, FLOAT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_INT_FLOAT_2(name) \ - ONYX_DEF(name, (INT, FLOAT, FLOAT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.f32, params->data[2].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_INT_FLOAT_3(name) \ - ONYX_DEF(name, (INT, FLOAT, FLOAT, FLOAT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.f32, params->data[2].of.f32, params->data[3].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_INT_FLOAT_4(name) \ - ONYX_DEF(name, (INT, FLOAT, FLOAT, FLOAT, FLOAT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.f32, params->data[2].of.f32, params->data[3].of.f32, params->data[4].of.f32); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_FLOAT(name) \ - ONYX_DEF(name, (INT, INT, FLOAT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_PTR_INT(name, ptr_type) \ - ONYX_DEF(name, (INT, INT, PTR, INT), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, (ptr_type *) ONYX_PTR(params->data[2].of.i32), params->data[3].of.i32); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_PTR_2(name, p1, p2) \ - ONYX_DEF(name, (INT, INT, PTR, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, \ - (p1 *) ONYX_PTR(params->data[2].of.i32), \ - (p2 *) ONYX_PTR(params->data[3].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_2_PTR_3(name, p1, p2, p3) \ - ONYX_DEF(name, (INT, INT, PTR, PTR, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, \ - (p1 *) ONYX_PTR(params->data[2].of.i32), \ - (p2 *) ONYX_PTR(params->data[3].of.i32), \ - (p3 *) ONYX_PTR(params->data[4].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_3_PTR_2(name, p1, p2) \ - ONYX_DEF(name, (INT, INT, INT, PTR, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, \ - (p1 *) ONYX_PTR(params->data[3].of.i32), \ - (p2 *) ONYX_PTR(params->data[4].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_3_PTR_4(name, p1, p2, p3, p4) \ - ONYX_DEF(name, (INT, INT, INT, PTR, PTR, PTR, PTR), ()) { \ - glad_##name (params->data[0].of.i32, params->data[1].of.i32, params->data[2].of.i32, \ - (p1 *) ONYX_PTR(params->data[3].of.i32), \ - (p2 *) ONYX_PTR(params->data[4].of.i32), \ - (p3 *) ONYX_PTR(params->data[5].of.i32), \ - (p4 *) ONYX_PTR(params->data[6].of.i32)); \ - return NULL; \ - } - -#define ONYX_GL_INT_PTR_INT_PTR_INT(name, p1, p2) \ - ONYX_DEF(name, (INT, PTR, INT, PTR, INT), ()) { \ - glad_##name (params->data[0].of.i32, \ - (p1 *) ONYX_PTR(params->data[1].of.i32), \ - params->data[2].of.i32, \ - (p2 *) ONYX_PTR(params->data[3].of.i32), \ - params->data[4].of.i32); \ - return NULL; \ - } - -ONYX_DEF(glInit, (LONG), ()) { - GLADloadfunc load_sym = (GLADloadfunc) params->data[0].of.i64; - gladLoadGLES2(load_sym); - return NULL; -} - -ONYX_GL_0(glFinish) -ONYX_GL_0(glFlush) -ONYX_GL_0(glReleaseShaderCompiler) -ONYX_GL_0(glEndTransformFeedback) -ONYX_GL_0(glPauseTransformFeedback) -ONYX_GL_0(glResumeTransformFeedback) -ONYX_GL_0_RET_INT(glCreateProgram) -ONYX_GL_0_RET_INT(glGetError) -ONYX_GL_INT_1(glActiveTexture) -ONYX_GL_INT_1(glClear) -ONYX_GL_INT_1(glEnable) -ONYX_GL_INT_1(glDisable) -ONYX_GL_INT_1(glBlendEquation) -ONYX_GL_INT_1(glClearStencil) -ONYX_GL_INT_1(glCompileShader) -ONYX_GL_INT_1(glCullFace) -ONYX_GL_INT_1(glDeleteProgram) -ONYX_GL_INT_1(glDeleteShader) -ONYX_GL_INT_1(glDepthFunc) -ONYX_GL_INT_1(glDepthMask) -ONYX_GL_INT_1(glDisableVertexAttribArray) -ONYX_GL_INT_1(glEnableVertexAttribArray) -ONYX_GL_INT_1(glFrontFace) -ONYX_GL_INT_1(glGenerateMipmap) -ONYX_GL_INT_1(glLinkProgram) -ONYX_GL_INT_1(glStencilMask) -ONYX_GL_INT_1(glUseProgram) -ONYX_GL_INT_1(glValidateProgram) -ONYX_GL_INT_1(glReadBuffer) -ONYX_GL_INT_1(glEndQuery) -ONYX_GL_INT_1(glBindVertexArray) -ONYX_GL_INT_1(glBeginTransformFeedback) -ONYX_GL_INT_2(glAttachShader) -ONYX_GL_INT_2(glBindBuffer) -ONYX_GL_INT_2(glBindFramebuffer) -ONYX_GL_INT_2(glBindRenderbuffer) -ONYX_GL_INT_2(glBindTexture) -ONYX_GL_INT_2(glBlendEquationSeparate) -ONYX_GL_INT_2(glBlendFunc) -ONYX_GL_INT_2(glDetachShader) -ONYX_GL_INT_2(glHint) -ONYX_GL_INT_2(glPixelStorei) -ONYX_GL_INT_2(glStencilMaskSeparate) -ONYX_GL_INT_2(glBeginQuery) -ONYX_GL_INT_2(glBindSampler) -ONYX_GL_INT_2(glVertexAttribDivisor) -ONYX_GL_INT_2(glBindTransformFeedback) -ONYX_GL_INT_1_RET_INT(glCheckFramebufferStatus) -ONYX_GL_INT_1_RET_INT(glCreateShader) -ONYX_GL_INT_1_RET_INT(glIsBuffer) -ONYX_GL_INT_1_RET_INT(glIsEnabled) -ONYX_GL_INT_1_RET_INT(glIsFramebuffer) -ONYX_GL_INT_1_RET_INT(glIsProgram ) -ONYX_GL_INT_1_RET_INT(glIsRenderbuffer) -ONYX_GL_INT_1_RET_INT(glIsShader) -ONYX_GL_INT_1_RET_INT(glIsTexture) -ONYX_GL_INT_1_RET_INT(glIsQuery) -ONYX_GL_INT_1_RET_INT(glUnmapBuffer) -ONYX_GL_INT_1_RET_INT(glIsVertexArray) -// ONYX_GL_INT_1_RET_INT(glIsSync) -ONYX_GL_INT_1_RET_INT(glIsTransformFeedback) -ONYX_GL_INT_1_RET_INT(glIsSampler) -// ONYX_GL_INT_2_RET_INT(glFenceSync) -ONYX_GL_FLOAT_1(glLineWidth) -ONYX_GL_FLOAT_1(glClearDepthf) -ONYX_GL_FLOAT_2(glDepthRangef) -ONYX_GL_FLOAT_2(glPolygonOffset) -ONYX_GL_FLOAT_4(glClearColor) -ONYX_GL_FLOAT_4(glBlendColor) - -ONYX_GL_INT_PTR(glDeleteBuffers, GLuint) -ONYX_GL_INT_PTR(glDeleteFramebuffers, GLuint) -ONYX_GL_INT_PTR(glDeleteRenderbuffers, GLuint) -ONYX_GL_INT_PTR(glDeleteTextures, GLuint) -ONYX_GL_INT_PTR(glGenBuffers, GLuint) -ONYX_GL_INT_PTR(glGenFramebuffers, GLuint) -ONYX_GL_INT_PTR(glGenRenderbuffers, GLuint) -ONYX_GL_INT_PTR(glGenTextures, GLuint) -ONYX_GL_INT_PTR(glGetAttribLocation, char) -ONYX_GL_INT_PTR(glGetBooleanv, GLboolean) -ONYX_GL_INT_PTR(glGetFloatv, GLfloat) -ONYX_GL_INT_PTR(glGetIntegerv, GLint) -ONYX_GL_INT_PTR_RET_INT(glGetUniformLocation, char) -ONYX_GL_INT_PTR(glVertexAttrib1fv, GLfloat) -ONYX_GL_INT_PTR(glVertexAttrib2fv, GLfloat) -ONYX_GL_INT_PTR(glVertexAttrib3fv, GLfloat) -ONYX_GL_INT_PTR(glVertexAttrib4fv, GLfloat) -ONYX_GL_INT_PTR(glGenQueries, GLuint) -ONYX_GL_INT_PTR(glDeleteQueries, GLuint) -ONYX_GL_INT_PTR(glDrawBuffers, GLenum) -ONYX_GL_INT_PTR(glDeleteVertexArrays, GLuint) -ONYX_GL_INT_PTR(glGenVertexArrays, GLuint) -ONYX_GL_INT_PTR(glGenSamplers, GLuint) -ONYX_GL_INT_PTR(glGetInteger64v, GLint64) -ONYX_GL_INT_PTR(glDeleteSamplers, GLuint) -ONYX_GL_INT_PTR(glDeleteTransformFeedbacks, GLuint) -ONYX_GL_INT_PTR(glGenTransformFeedbacks, GLuint) -ONYX_GL_INT_PTR(glGetFragDataLocation, char) -ONYX_GL_INT_PTR(glVertexAttribI4iv, GLint) -ONYX_GL_INT_PTR(glVertexAttribI4uiv, GLuint) -ONYX_GL_INT_PTR_RET_PTR(glGetUniformBlockIndex, char) -ONYX_GL_INT_3(glDrawArrays) -ONYX_GL_INT_3(glStencilFunc) -ONYX_GL_INT_3(glStencilOp) -ONYX_GL_INT_3(glFlushMappedBufferRange) -ONYX_GL_INT_3(glBindBufferBase) -ONYX_GL_INT_3(glSamplerParameteri) -ONYX_GL_INT_3(glProgramParameteri) -ONYX_GL_INT_3(glTexParameteri) -ONYX_GL_INT_4(glBlendFuncSeparate) -ONYX_GL_INT_4(glColorMask) -ONYX_GL_INT_4(glScissor) -ONYX_GL_INT_4(glStencilFuncSeparate) -ONYX_GL_INT_4(glViewport) -ONYX_GL_INT_4(glMapBufferRange) -ONYX_GL_INT_4(glFramebufferRenderbuffer) -ONYX_GL_INT_4(glRenderbufferStorage) -ONYX_GL_INT_4(glStencilOpSeparate) - -ONYX_GL_INT_2_PTR(glBindAttribLocation, char) -ONYX_GL_INT_2_PTR(glGetBufferParameteriv, GLint) -ONYX_GL_INT_2_PTR(glGetProgramiv, GLint) -ONYX_GL_INT_2_PTR(glGetRenderbufferParameteriv, GLint) -ONYX_GL_INT_2_PTR(glGetShaderiv, GLint) -ONYX_GL_INT_2_PTR(glGetTexParameterfv, GLfloat) -ONYX_GL_INT_2_PTR(glGetTexParameteriv, GLint) -ONYX_GL_INT_2_PTR(glGetUniformfv, GLfloat) -ONYX_GL_INT_2_PTR(glGetUniformiv, GLint) -ONYX_GL_INT_2_PTR(glGetVertexAttribfv, GLfloat) -ONYX_GL_INT_2_PTR(glGetVertexAttribiv, GLint) -ONYX_GL_INT_2_PTR(glTexParameterfv, GLfloat) -ONYX_GL_INT_2_PTR(glTexParameteriv, GLint) -ONYX_GL_INT_2_PTR(glUniform1fv, GLfloat) -ONYX_GL_INT_2_PTR(glUniform1iv, GLint) -ONYX_GL_INT_2_PTR(glUniform2fv, GLfloat) -ONYX_GL_INT_2_PTR(glUniform2iv, GLint) -ONYX_GL_INT_2_PTR(glUniform3fv, GLfloat) -ONYX_GL_INT_2_PTR(glUniform3iv, GLint) -ONYX_GL_INT_2_PTR(glUniform4fv, GLfloat) -ONYX_GL_INT_2_PTR(glUniform4iv, GLint) -ONYX_GL_INT_2_PTR(glGetQueryiv, GLint) -ONYX_GL_INT_2_PTR(glGetQueryObjectuiv, GLuint) -ONYX_GL_INT_2_PTR(glGetInteger64i_v, GLint64) -ONYX_GL_INT_2_PTR(glGetBufferParameteri64v, GLint64) -ONYX_GL_INT_2_PTR(glSamplerParameteriv, GLint) -ONYX_GL_INT_2_PTR(glSamplerParameterfv, GLfloat) -ONYX_GL_INT_2_PTR(glGetSamplerParameteriv, GLint) -ONYX_GL_INT_2_PTR(glGetSamplerParameterfv, GLfloat) -ONYX_GL_INT_2_PTR(glGetIntegeri_v, GLint) -ONYX_GL_INT_2_PTR(glGetVertexAttribIiv, GLint) -ONYX_GL_INT_2_PTR(glGetVertexAttribIuiv, GLuint) -ONYX_GL_INT_2_PTR(glGetUniformuiv, GLuint) -ONYX_GL_INT_2_PTR(glUniform1uiv, GLuint) -ONYX_GL_INT_2_PTR(glUniform2uiv, GLuint) -ONYX_GL_INT_2_PTR(glUniform3uiv, GLuint) -ONYX_GL_INT_2_PTR(glUniform4uiv, GLuint) -ONYX_GL_INT_2_PTR(glClearBufferiv, GLint) -ONYX_GL_INT_2_PTR(glClearBufferuiv, GLuint) -ONYX_GL_INT_2_PTR(glClearBufferfv, GLfloat) -ONYX_GL_INT_2_PTR(glInvalidateFramebuffer, GLenum) -ONYX_GL_INT_3_PTR(glBufferSubData, void) -ONYX_GL_INT_3_FAUX_PTR(glDrawElements, void) -ONYX_GL_INT_3_PTR(glGetFramebufferAttachmentParameteriv, GLint) -ONYX_GL_INT_2_FLOAT(glSamplerParameterf) -ONYX_GL_INT_2_FLOAT(glTexParameterf) - -ONYX_GL_INT_2_PTR_INT(glBufferData, void) -ONYX_GL_INT_7_PTR(glCompressedTexImage2D, void) -ONYX_GL_INT_8_PTR(glCompressedTexSubImage2D, void) -ONYX_GL_INT_8(glCopyTexImage2D) -ONYX_GL_INT_8(glCopyTexSubImage2D) -ONYX_GL_INT_5(glFramebufferTexture2D) -ONYX_GL_INT_3_PTR_4(glGetActiveAttrib, GLsizei, GLint, GLenum, char) -ONYX_GL_INT_3_PTR_4(glGetActiveUniform, GLsizei, GLint, GLenum, char) -ONYX_GL_INT_2_PTR_2(glGetAttachedShaders, GLsizei, GLuint) -ONYX_GL_INT_2_PTR_2(glGetProgramInfoLog, GLsizei, char) -ONYX_GL_INT_2_PTR_2(glGetShaderInfoLog, GLsizei, char) -ONYX_GL_INT_2_PTR_2(glGetShaderPrecisionFormat, GLint, GLint) -ONYX_GL_INT_2_PTR_2(glGetShaderSource, GLsizei, char) -ONYX_GL_INT_6_PTR(glReadPixels, void) -ONYX_GL_FLOAT_INT(glSampleCoverage) -ONYX_GL_INT_PTR_INT_PTR_INT(glShaderBinary, GLuint, void) -ONYX_GL_INT_8_PTR(glTexImage2D, void) -ONYX_GL_INT_8_PTR(glTexSubImage2D, void) -ONYX_GL_INT_6(glVertexAttribPointer) -ONYX_GL_INT_FLOAT(glUniform1f) -ONYX_GL_INT_2(glUniform1i) -ONYX_GL_INT_FLOAT_2(glUniform2f) -ONYX_GL_INT_3(glUniform2i) -ONYX_GL_INT_FLOAT_3(glUniform3f) -ONYX_GL_INT_4(glUniform3i) -ONYX_GL_INT_FLOAT_4(glUniform4f) -ONYX_GL_INT_5(glUniform4i) -ONYX_GL_INT_2(glUniform1ui) -ONYX_GL_INT_3(glUniform2ui) -ONYX_GL_INT_4(glUniform3ui) -ONYX_GL_INT_5(glUniform4ui) -ONYX_GL_INT_3_PTR(glUniformMatrix2fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix3fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix4fv, GLfloat) -ONYX_GL_INT_FLOAT(glVertexAttrib1f) -ONYX_GL_INT_FLOAT_2(glVertexAttrib2f) -ONYX_GL_INT_FLOAT_3(glVertexAttrib3f) -ONYX_GL_INT_FLOAT_4(glVertexAttrib4f) -ONYX_GL_INT_3_PTR(glUniformMatrix2x3fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix3x2fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix2x4fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix4x2fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix3x4fv, GLfloat) -ONYX_GL_INT_3_PTR(glUniformMatrix4x3fv, GLfloat) - - -// Open3: GLES -ONYX_GL_INT_6(glDrawRangeElements) -ONYX_GL_INT_9_PTR(glTexImage3D, void) -ONYX_GL_INT_10_PTR(glTexSubImage3D, void) -ONYX_GL_INT_9(glCopyTexSubImage3D) -ONYX_GL_INT_8_PTR(glCompressedTexImage3D, void) -ONYX_GL_INT_10_PTR(glCompressedTexSubImage3D, void) -ONYX_GL_INT_10(glBlitFramebuffer) -ONYX_GL_INT_5(glRenderbufferStorageMultisample) -ONYX_GL_INT_5(glFramebufferTextureLayer) -ONYX_GL_INT_5(glBindBufferRange) -ONYX_GL_INT_3_PTR_4(glGetTransformFeedbackVarying, GLsizei, GLsizei, GLenum, char) -ONYX_GL_INT_5(glVertexAttribIPointer) -ONYX_GL_INT_5(glVertexAttribI4i) -ONYX_GL_INT_5(glVertexAttribI4ui) -// ONYX_GL_INT_2_FLOAT_INT(glClearBufferfi) -ONYX_GL_INT_5(glCopyBufferSubData) -// ONYX_GL_INT_2_PTR_INT_PTR(glGetActiveUniformsiv, GLuint, GLint) -ONYX_GL_INT_3_PTR(glGetActiveUniformBlockiv, GLint) -ONYX_GL_INT_3_PTR_2(glGetActiveUniformBlockName, GLsizei, char) -ONYX_GL_INT_3(glUniformBlockBinding) -ONYX_GL_INT_4(glDrawArraysInstanced) -ONYX_GL_INT_5(glDrawElementsInstanced) -ONYX_GL_INT_2_PTR_3(glGetProgramBinary, GLsizei, GLenum, void) -ONYX_GL_INT_2_PTR_INT(glProgramBinary, void) -// ONYX_GL_INT_2_PTR_INT_4(glInvalidateSubFramebuffer, GLenum) -ONYX_GL_INT_5(glTexStorage2D) -ONYX_GL_INT_6(glTexStorage3D) -ONYX_GL_INT_4_PTR(glGetInternalformativ, GLint) - -ONYX_DEF(glShaderSource, (INT, INT, PTR, PTR), ()) { - GLsizei count = params->data[1].of.i32; - GLchar** sources = ONYX_PTR(params->data[2].of.i32); - GLint* lengths = ONYX_PTR(params->data[3].of.i32); - - glad_glShaderSource(params->data[0].of.i32, count, sources, lengths); - return NULL; -} - -ONYX_DEF(glGetUniformIndices, (INT, INT, PTR, PTR), ()) { - GLsizei count = params->data[1].of.i32; - GLchar** names = ONYX_PTR(params->data[2].of.i32); - GLint* lengths = ONYX_PTR(params->data[3].of.i32); - - glad_glGetUniformIndices(params->data[0].of.i32, count, (const char *const*) names, lengths); - return NULL; -} - -// glGetBufferPointerv :: (target: GLenum, pname: GLenum, params: ^rawptr) -> void --- -// glGetVertexAttribPointerv :: (index: GLuint, pname: GLenum, pointer: ^rawptr) -> void --- -// glTransformFeedbackVaryings :: (program: GLuint, count: GLsizei, varyings: ^^GLchar, bufferMode: GLenum) -> void --- - -// Hmm... -// glClientWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> GLenum --- -// glWaitSync :: (sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> void --- -// glGetSynciv :: (sync: GLsync, pname: GLenum, bufSize: GLsizei, length: ^GLsizei, values: ^GLint) -> void --- -// ONYX_GL_INT_RET_LONG(glGetString) -// ONYX_GL_INT_2_RET_LONG(glGetStringi) - - -ONYX_LIBRARY { - ONYX_FUNC(glInit) - ONYX_FUNC(glActiveTexture) - ONYX_FUNC(glAttachShader) - ONYX_FUNC(glBindAttribLocation) - ONYX_FUNC(glBindBuffer) - ONYX_FUNC(glBindFramebuffer) - ONYX_FUNC(glBindRenderbuffer) - ONYX_FUNC(glBindTexture) - ONYX_FUNC(glBlendColor) - ONYX_FUNC(glBlendEquation) - ONYX_FUNC(glBlendEquationSeparate) - ONYX_FUNC(glBlendFunc) - ONYX_FUNC(glBlendFuncSeparate) - ONYX_FUNC(glBufferData) - ONYX_FUNC(glBufferSubData) - ONYX_FUNC(glCheckFramebufferStatus) - ONYX_FUNC(glClear) - ONYX_FUNC(glClearColor) - ONYX_FUNC(glClearDepthf) - ONYX_FUNC(glClearStencil) - ONYX_FUNC(glColorMask) - ONYX_FUNC(glCompileShader) - ONYX_FUNC(glCompressedTexImage2D) - ONYX_FUNC(glCompressedTexSubImage2D) - ONYX_FUNC(glCopyTexImage2D) - ONYX_FUNC(glCopyTexSubImage2D) - ONYX_FUNC(glCreateProgram) - ONYX_FUNC(glCreateShader) - ONYX_FUNC(glCullFace) - ONYX_FUNC(glDeleteBuffers) - ONYX_FUNC(glDeleteFramebuffers) - ONYX_FUNC(glDeleteProgram) - ONYX_FUNC(glDeleteRenderbuffers) - ONYX_FUNC(glDeleteShader) - ONYX_FUNC(glDeleteTextures) - ONYX_FUNC(glDepthFunc) - ONYX_FUNC(glDepthMask) - ONYX_FUNC(glDepthRangef) - ONYX_FUNC(glDetachShader) - ONYX_FUNC(glDisable) - ONYX_FUNC(glDisableVertexAttribArray) - ONYX_FUNC(glDrawArrays) - ONYX_FUNC(glDrawElements) - ONYX_FUNC(glEnable) - ONYX_FUNC(glEnableVertexAttribArray) - ONYX_FUNC(glFinish) - ONYX_FUNC(glFlush) - ONYX_FUNC(glFramebufferRenderbuffer) - ONYX_FUNC(glFramebufferTexture2D) - ONYX_FUNC(glFrontFace) - ONYX_FUNC(glGenBuffers) - ONYX_FUNC(glGenerateMipmap) - ONYX_FUNC(glGenFramebuffers) - ONYX_FUNC(glGenRenderbuffers) - ONYX_FUNC(glGenTextures) - ONYX_FUNC(glGetActiveAttrib) - ONYX_FUNC(glGetActiveUniform) - ONYX_FUNC(glGetAttachedShaders) - ONYX_FUNC(glGetAttribLocation) - ONYX_FUNC(glGetBooleanv) - ONYX_FUNC(glGetBufferParameteriv) - ONYX_FUNC(glGetError) - ONYX_FUNC(glGetFloatv) - ONYX_FUNC(glGetFramebufferAttachmentParameteriv) - ONYX_FUNC(glGetIntegerv) - ONYX_FUNC(glGetProgramiv) - ONYX_FUNC(glGetProgramInfoLog) - ONYX_FUNC(glGetRenderbufferParameteriv) - ONYX_FUNC(glGetShaderiv) - ONYX_FUNC(glGetShaderInfoLog) - ONYX_FUNC(glGetShaderPrecisionFormat) - ONYX_FUNC(glGetShaderSource) - // ONYX_FUNC(glGetString) - ONYX_FUNC(glGetTexParameterfv) - ONYX_FUNC(glGetTexParameteriv) - ONYX_FUNC(glGetUniformfv) - ONYX_FUNC(glGetUniformiv) - ONYX_FUNC(glGetUniformLocation) - ONYX_FUNC(glGetVertexAttribfv) - ONYX_FUNC(glGetVertexAttribiv) - // ONYX_FUNC(glGetVertexAttribPointerv) - ONYX_FUNC(glHint) - ONYX_FUNC(glIsBuffer) - ONYX_FUNC(glIsEnabled) - ONYX_FUNC(glIsFramebuffer) - ONYX_FUNC(glIsProgram) - ONYX_FUNC(glIsRenderbuffer) - ONYX_FUNC(glIsShader) - ONYX_FUNC(glIsTexture) - ONYX_FUNC(glLineWidth) - ONYX_FUNC(glLinkProgram) - ONYX_FUNC(glPixelStorei) - ONYX_FUNC(glPolygonOffset) - ONYX_FUNC(glReadPixels) - ONYX_FUNC(glReleaseShaderCompiler) - ONYX_FUNC(glRenderbufferStorage) - ONYX_FUNC(glSampleCoverage) - ONYX_FUNC(glScissor) - ONYX_FUNC(glShaderBinary) - ONYX_FUNC(glShaderSource) - ONYX_FUNC(glStencilFunc) - ONYX_FUNC(glStencilFuncSeparate) - ONYX_FUNC(glStencilMask) - ONYX_FUNC(glStencilMaskSeparate) - ONYX_FUNC(glStencilOp) - ONYX_FUNC(glStencilOpSeparate) - ONYX_FUNC(glTexImage2D) - ONYX_FUNC(glTexParameterf) - ONYX_FUNC(glTexParameterfv) - ONYX_FUNC(glTexParameteri) - ONYX_FUNC(glTexParameteriv) - ONYX_FUNC(glTexSubImage2D) - ONYX_FUNC(glUniform1f) - ONYX_FUNC(glUniform1fv) - ONYX_FUNC(glUniform1i) - ONYX_FUNC(glUniform1iv) - ONYX_FUNC(glUniform2f) - ONYX_FUNC(glUniform2fv) - ONYX_FUNC(glUniform2i) - ONYX_FUNC(glUniform2iv) - ONYX_FUNC(glUniform3f) - ONYX_FUNC(glUniform3fv) - ONYX_FUNC(glUniform3i) - ONYX_FUNC(glUniform3iv) - ONYX_FUNC(glUniform4f) - ONYX_FUNC(glUniform4fv) - ONYX_FUNC(glUniform4i) - ONYX_FUNC(glUniform4iv) - ONYX_FUNC(glUniformMatrix2fv) - ONYX_FUNC(glUniformMatrix3fv) - ONYX_FUNC(glUniformMatrix4fv) - ONYX_FUNC(glUseProgram) - ONYX_FUNC(glValidateProgram) - ONYX_FUNC(glVertexAttrib1f) - ONYX_FUNC(glVertexAttrib1fv) - ONYX_FUNC(glVertexAttrib2f) - ONYX_FUNC(glVertexAttrib2fv) - ONYX_FUNC(glVertexAttrib3f) - ONYX_FUNC(glVertexAttrib3fv) - ONYX_FUNC(glVertexAttrib4f) - ONYX_FUNC(glVertexAttrib4fv) - ONYX_FUNC(glVertexAttribPointer) - ONYX_FUNC(glViewport) - - - // Open3: GLES - ONYX_FUNC(glReadBuffer) - ONYX_FUNC(glDrawRangeElements) - ONYX_FUNC(glTexImage3D) - ONYX_FUNC(glTexSubImage3D) - ONYX_FUNC(glCopyTexSubImage3D) - ONYX_FUNC(glCompressedTexImage3D) - ONYX_FUNC(glCompressedTexSubImage3D) - ONYX_FUNC(glGenQueries) - ONYX_FUNC(glDeleteQueries) - ONYX_FUNC(glIsQuery) - ONYX_FUNC(glBeginQuery) - ONYX_FUNC(glEndQuery) - ONYX_FUNC(glGetQueryiv) - ONYX_FUNC(glGetQueryObjectuiv) - ONYX_FUNC(glUnmapBuffer) - // ONYX_FUNC(glGetBufferPointerv) - ONYX_FUNC(glDrawBuffers) - ONYX_FUNC(glUniformMatrix2x3fv) - ONYX_FUNC(glUniformMatrix3x2fv) - ONYX_FUNC(glUniformMatrix2x4fv) - ONYX_FUNC(glUniformMatrix4x2fv) - ONYX_FUNC(glUniformMatrix3x4fv) - ONYX_FUNC(glUniformMatrix4x3fv) - ONYX_FUNC(glBlitFramebuffer) - ONYX_FUNC(glRenderbufferStorageMultisample) - ONYX_FUNC(glFramebufferTextureLayer) - ONYX_FUNC(glMapBufferRange) - ONYX_FUNC(glFlushMappedBufferRange) - ONYX_FUNC(glBindVertexArray) - ONYX_FUNC(glDeleteVertexArrays) - ONYX_FUNC(glGenVertexArrays) - ONYX_FUNC(glIsVertexArray) - ONYX_FUNC(glGetIntegeri_v) - ONYX_FUNC(glBeginTransformFeedback) - ONYX_FUNC(glEndTransformFeedback) - ONYX_FUNC(glBindBufferRange) - ONYX_FUNC(glBindBufferBase) - // ONYX_FUNC(glTransformFeedbackVaryings) - ONYX_FUNC(glGetTransformFeedbackVarying) - ONYX_FUNC(glVertexAttribIPointer) - ONYX_FUNC(glGetVertexAttribIiv) - ONYX_FUNC(glGetVertexAttribIuiv) - ONYX_FUNC(glVertexAttribI4i) - ONYX_FUNC(glVertexAttribI4ui) - ONYX_FUNC(glVertexAttribI4iv) - ONYX_FUNC(glVertexAttribI4uiv) - ONYX_FUNC(glGetUniformuiv) - ONYX_FUNC(glGetFragDataLocation) - ONYX_FUNC(glUniform1ui) - ONYX_FUNC(glUniform2ui) - ONYX_FUNC(glUniform3ui) - ONYX_FUNC(glUniform4ui) - ONYX_FUNC(glUniform1uiv) - ONYX_FUNC(glUniform2uiv) - ONYX_FUNC(glUniform3uiv) - ONYX_FUNC(glUniform4uiv) - ONYX_FUNC(glClearBufferiv) - ONYX_FUNC(glClearBufferuiv) - ONYX_FUNC(glClearBufferfv) - // ONYX_FUNC(glClearBufferfi) - // ONYX_FUNC(glGetStringi) - ONYX_FUNC(glCopyBufferSubData) - ONYX_FUNC(glGetUniformIndices) - // ONYX_FUNC(glGetActiveUniformsiv) - ONYX_FUNC(glGetUniformBlockIndex) - ONYX_FUNC(glGetActiveUniformBlockiv) - ONYX_FUNC(glGetActiveUniformBlockName) - ONYX_FUNC(glUniformBlockBinding) - ONYX_FUNC(glDrawArraysInstanced) - ONYX_FUNC(glDrawElementsInstanced) - //ONYX_FUNC(glFenceSync) - //ONYX_FUNC(glIsSync) - //ONYX_FUNC(glDeleteSync) - //ONYX_FUNC(glClientWaitSync) - //ONYX_FUNC(glWaitSync) - ONYX_FUNC(glGetInteger64v) - // ONYX_FUNC(glGetSynciv) - ONYX_FUNC(glGetInteger64i_v) - ONYX_FUNC(glGetBufferParameteri64v) - ONYX_FUNC(glGenSamplers) - ONYX_FUNC(glDeleteSamplers) - ONYX_FUNC(glIsSampler) - ONYX_FUNC(glBindSampler) - ONYX_FUNC(glSamplerParameteri) - ONYX_FUNC(glSamplerParameteriv) - ONYX_FUNC(glSamplerParameterf) - ONYX_FUNC(glSamplerParameterfv) - ONYX_FUNC(glGetSamplerParameteriv) - ONYX_FUNC(glGetSamplerParameterfv) - ONYX_FUNC(glVertexAttribDivisor) - ONYX_FUNC(glBindTransformFeedback) - ONYX_FUNC(glDeleteTransformFeedbacks) - ONYX_FUNC(glGenTransformFeedbacks) - ONYX_FUNC(glIsTransformFeedback) - ONYX_FUNC(glPauseTransformFeedback) - ONYX_FUNC(glResumeTransformFeedback) - ONYX_FUNC(glGetProgramBinary) - ONYX_FUNC(glProgramBinary) - ONYX_FUNC(glProgramParameteri) - ONYX_FUNC(glInvalidateFramebuffer) - // ONYX_FUNC(glInvalidateSubFramebuffer) - ONYX_FUNC(glTexStorage2D) - ONYX_FUNC(glTexStorage3D) - ONYX_FUNC(glGetInternalformativ) - - NULL -}; diff --git a/modules/opengles/onyx_opengles.so b/modules/opengles/onyx_opengles.so index 6015b67e..59deebe8 100755 Binary files a/modules/opengles/onyx_opengles.so and b/modules/opengles/onyx_opengles.so differ diff --git a/modules/opengles/opengles.c b/modules/opengles/opengles.c new file mode 100644 index 00000000..c3261a92 --- /dev/null +++ b/modules/opengles/opengles.c @@ -0,0 +1,1466 @@ +// +// THIS FILE WAS AUTOMATICALLY GENERATED. +// + +#define GLAD_GLES2_IMPLEMENTATION +#include "glad.h" + + +#define ONYX_LIBRARY_NAME onyx_opengles +#include "onyx_library.h" + +#define P(i, k) (params->data[i].of.k) + + +ONYX_DEF(glInit, (LONG), ()) { + GLADloadfunc load_sym = (GLADloadfunc) params->data[0].of.i64; + gladLoadGLES2(load_sym); + return NULL; +} + +ONYX_DEF(glActiveTexture, (WASM_I32), ()) { + glad_glActiveTexture(P(0, i32)); + return NULL; +} + +ONYX_DEF(glAttachShader, (WASM_I32, WASM_I32), ()) { + glad_glAttachShader(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBindAttribLocation, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBindAttribLocation(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glBindBuffer, (WASM_I32, WASM_I32), ()) { + glad_glBindBuffer(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBindFramebuffer, (WASM_I32, WASM_I32), ()) { + glad_glBindFramebuffer(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBindRenderbuffer, (WASM_I32, WASM_I32), ()) { + glad_glBindRenderbuffer(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBindTexture, (WASM_I32, WASM_I32), ()) { + glad_glBindTexture(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBlendColor, (WASM_F32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glBlendColor(P(0, f32), P(1, f32), P(2, f32), P(3, f32)); + return NULL; +} + +ONYX_DEF(glBlendEquation, (WASM_I32), ()) { + glad_glBlendEquation(P(0, i32)); + return NULL; +} + +ONYX_DEF(glBlendEquationSeparate, (WASM_I32, WASM_I32), ()) { + glad_glBlendEquationSeparate(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBlendFunc, (WASM_I32, WASM_I32), ()) { + glad_glBlendFunc(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBlendFuncSeparate, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBlendFuncSeparate(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glBufferData, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBufferData(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), P(3, i32)); + return NULL; +} + +ONYX_DEF(glBufferSubData, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBufferSubData(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glCheckFramebufferStatus, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glCheckFramebufferStatus(P(0, i32))); + return NULL; +} + +ONYX_DEF(glClear, (WASM_I32), ()) { + glad_glClear(P(0, i32)); + return NULL; +} + +ONYX_DEF(glClearColor, (WASM_F32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glClearColor(P(0, f32), P(1, f32), P(2, f32), P(3, f32)); + return NULL; +} + +ONYX_DEF(glClearDepthf, (WASM_F32), ()) { + glad_glClearDepthf(P(0, f32)); + return NULL; +} + +ONYX_DEF(glClearStencil, (WASM_I32), ()) { + glad_glClearStencil(P(0, i32)); + return NULL; +} + +ONYX_DEF(glColorMask, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glColorMask(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glCompileShader, (WASM_I32), ()) { + glad_glCompileShader(P(0, i32)); + return NULL; +} + +ONYX_DEF(glCompressedTexImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCompressedTexImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), ONYX_PTR(P(7, i32))); + return NULL; +} + +ONYX_DEF(glCompressedTexSubImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCompressedTexSubImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), ONYX_PTR(P(8, i32))); + return NULL; +} + +ONYX_DEF(glCopyTexImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCopyTexImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32)); + return NULL; +} + +ONYX_DEF(glCopyTexSubImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCopyTexSubImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32)); + return NULL; +} + +ONYX_DEF(glCreateProgram, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glCreateProgram()); + return NULL; +} + +ONYX_DEF(glCreateShader, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glCreateShader(P(0, i32))); + return NULL; +} + +ONYX_DEF(glCullFace, (WASM_I32), ()) { + glad_glCullFace(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDeleteBuffers, (WASM_I32, WASM_I32), ()) { + glad_glDeleteBuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDeleteFramebuffers, (WASM_I32, WASM_I32), ()) { + glad_glDeleteFramebuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDeleteProgram, (WASM_I32), ()) { + glad_glDeleteProgram(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDeleteRenderbuffers, (WASM_I32, WASM_I32), ()) { + glad_glDeleteRenderbuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDeleteShader, (WASM_I32), ()) { + glad_glDeleteShader(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDeleteTextures, (WASM_I32, WASM_I32), ()) { + glad_glDeleteTextures(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDepthFunc, (WASM_I32), ()) { + glad_glDepthFunc(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDepthMask, (WASM_I32), ()) { + glad_glDepthMask(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDepthRangef, (WASM_F32, WASM_F32), ()) { + glad_glDepthRangef(P(0, f32), P(1, f32)); + return NULL; +} + +ONYX_DEF(glDetachShader, (WASM_I32, WASM_I32), ()) { + glad_glDetachShader(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glDisable, (WASM_I32), ()) { + glad_glDisable(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDisableVertexAttribArray, (WASM_I32), ()) { + glad_glDisableVertexAttribArray(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDrawArrays, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glDrawArrays(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glDrawElements, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glDrawElements(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glEnable, (WASM_I32), ()) { + glad_glEnable(P(0, i32)); + return NULL; +} + +ONYX_DEF(glEnableVertexAttribArray, (WASM_I32), ()) { + glad_glEnableVertexAttribArray(P(0, i32)); + return NULL; +} + +ONYX_DEF(glFinish, (), ()) { + glad_glFinish(); + return NULL; +} + +ONYX_DEF(glFlush, (), ()) { + glad_glFlush(); + return NULL; +} + +ONYX_DEF(glFramebufferRenderbuffer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glFramebufferRenderbuffer(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glFramebufferTexture2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glFramebufferTexture2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glFrontFace, (WASM_I32), ()) { + glad_glFrontFace(P(0, i32)); + return NULL; +} + +ONYX_DEF(glGenBuffers, (WASM_I32, WASM_I32), ()) { + glad_glGenBuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGenerateMipmap, (WASM_I32), ()) { + glad_glGenerateMipmap(P(0, i32)); + return NULL; +} + +ONYX_DEF(glGenFramebuffers, (WASM_I32, WASM_I32), ()) { + glad_glGenFramebuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGenRenderbuffers, (WASM_I32, WASM_I32), ()) { + glad_glGenRenderbuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGenTextures, (WASM_I32, WASM_I32), ()) { + glad_glGenTextures(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetActiveAttrib, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetActiveAttrib(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32)), ONYX_PTR(P(4, i32)), ONYX_PTR(P(5, i32)), ONYX_PTR(P(6, i32))); + return NULL; +} + +ONYX_DEF(glGetActiveUniform, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetActiveUniform(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32)), ONYX_PTR(P(4, i32)), ONYX_PTR(P(5, i32)), ONYX_PTR(P(6, i32))); + return NULL; +} + +ONYX_DEF(glGetAttachedShaders, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetAttachedShaders(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetAttribLocation, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glGetAttribLocation(P(0, i32), ONYX_PTR(P(1, i32)))); + return NULL; +} + +ONYX_DEF(glGetBooleanv, (WASM_I32, WASM_I32), ()) { + glad_glGetBooleanv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetBufferParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetBufferParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetError, (), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glGetError()); + return NULL; +} + +ONYX_DEF(glGetFloatv, (WASM_I32, WASM_I32), ()) { + glad_glGetFloatv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetFramebufferAttachmentParameteriv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetFramebufferAttachmentParameteriv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetIntegerv, (WASM_I32, WASM_I32), ()) { + glad_glGetIntegerv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetProgramiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetProgramiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetProgramInfoLog, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetProgramInfoLog(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetRenderbufferParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetRenderbufferParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetShaderiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetShaderiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetShaderInfoLog, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetShaderInfoLog(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetShaderPrecisionFormat, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetShaderPrecisionFormat(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetShaderSource, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetShaderSource(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetString, (WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(glad_glGetString(P(0, i32))); + return NULL; +} + +ONYX_DEF(glGetTexParameterfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetTexParameterfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetTexParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetTexParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetUniformfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetUniformfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetUniformiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetUniformiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetUniformLocation, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glGetUniformLocation(P(0, i32), ONYX_PTR(P(1, i32)))); + return NULL; +} + +ONYX_DEF(glGetVertexAttribfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetVertexAttribfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetVertexAttribiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetVertexAttribiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetVertexAttribPointerv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetVertexAttribPointerv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glHint, (WASM_I32, WASM_I32), ()) { + glad_glHint(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glIsBuffer, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsBuffer(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsEnabled, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsEnabled(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsFramebuffer, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsFramebuffer(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsProgram, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsProgram(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsRenderbuffer, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsRenderbuffer(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsShader, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsShader(P(0, i32))); + return NULL; +} + +ONYX_DEF(glIsTexture, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsTexture(P(0, i32))); + return NULL; +} + +ONYX_DEF(glLineWidth, (WASM_F32), ()) { + glad_glLineWidth(P(0, f32)); + return NULL; +} + +ONYX_DEF(glLinkProgram, (WASM_I32), ()) { + glad_glLinkProgram(P(0, i32)); + return NULL; +} + +ONYX_DEF(glPixelStorei, (WASM_I32, WASM_I32), ()) { + glad_glPixelStorei(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glPolygonOffset, (WASM_F32, WASM_F32), ()) { + glad_glPolygonOffset(P(0, f32), P(1, f32)); + return NULL; +} + +ONYX_DEF(glReadPixels, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glReadPixels(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), ONYX_PTR(P(6, i32))); + return NULL; +} + +ONYX_DEF(glReleaseShaderCompiler, (), ()) { + glad_glReleaseShaderCompiler(); + return NULL; +} + +ONYX_DEF(glRenderbufferStorage, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glRenderbufferStorage(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glSampleCoverage, (WASM_F32, WASM_I32), ()) { + glad_glSampleCoverage(P(0, f32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glScissor, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glScissor(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glShaderBinary, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glShaderBinary(P(0, i32), ONYX_PTR(P(1, i32)), P(2, i32), ONYX_PTR(P(3, i32)), P(4, i32)); + return NULL; +} + +ONYX_DEF(glShaderSource, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glShaderSource(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glStencilFunc, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glStencilFunc(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glStencilFuncSeparate, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glStencilFuncSeparate(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glStencilMask, (WASM_I32), ()) { + glad_glStencilMask(P(0, i32)); + return NULL; +} + +ONYX_DEF(glStencilMaskSeparate, (WASM_I32, WASM_I32), ()) { + glad_glStencilMaskSeparate(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glStencilOp, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glStencilOp(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glStencilOpSeparate, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glStencilOpSeparate(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glTexImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), ONYX_PTR(P(8, i32))); + return NULL; +} + +ONYX_DEF(glTexParameterf, (WASM_I32, WASM_I32, WASM_F32), ()) { + glad_glTexParameterf(P(0, i32), P(1, i32), P(2, f32)); + return NULL; +} + +ONYX_DEF(glTexParameterfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexParameterfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glTexParameteri, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexParameteri(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glTexParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glTexSubImage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexSubImage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), ONYX_PTR(P(8, i32))); + return NULL; +} + +ONYX_DEF(glUniform1f, (WASM_I32, WASM_F32), ()) { + glad_glUniform1f(P(0, i32), P(1, f32)); + return NULL; +} + +ONYX_DEF(glUniform1fv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform1fv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform1i, (WASM_I32, WASM_I32), ()) { + glad_glUniform1i(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glUniform1iv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform1iv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform2f, (WASM_I32, WASM_F32, WASM_F32), ()) { + glad_glUniform2f(P(0, i32), P(1, f32), P(2, f32)); + return NULL; +} + +ONYX_DEF(glUniform2fv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform2fv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform2i, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform2i(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glUniform2iv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform2iv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform3f, (WASM_I32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glUniform3f(P(0, i32), P(1, f32), P(2, f32), P(3, f32)); + return NULL; +} + +ONYX_DEF(glUniform3fv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform3fv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform3i, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform3i(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glUniform3iv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform3iv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform4f, (WASM_I32, WASM_F32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glUniform4f(P(0, i32), P(1, f32), P(2, f32), P(3, f32), P(4, f32)); + return NULL; +} + +ONYX_DEF(glUniform4fv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform4fv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform4i, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform4i(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glUniform4iv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform4iv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix2fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix2fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix3fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix3fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix4fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix4fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUseProgram, (WASM_I32), ()) { + glad_glUseProgram(P(0, i32)); + return NULL; +} + +ONYX_DEF(glValidateProgram, (WASM_I32), ()) { + glad_glValidateProgram(P(0, i32)); + return NULL; +} + +ONYX_DEF(glVertexAttrib1f, (WASM_I32, WASM_F32), ()) { + glad_glVertexAttrib1f(P(0, i32), P(1, f32)); + return NULL; +} + +ONYX_DEF(glVertexAttrib1fv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttrib1fv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttrib2f, (WASM_I32, WASM_F32, WASM_F32), ()) { + glad_glVertexAttrib2f(P(0, i32), P(1, f32), P(2, f32)); + return NULL; +} + +ONYX_DEF(glVertexAttrib2fv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttrib2fv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttrib3f, (WASM_I32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glVertexAttrib3f(P(0, i32), P(1, f32), P(2, f32), P(3, f32)); + return NULL; +} + +ONYX_DEF(glVertexAttrib3fv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttrib3fv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttrib4f, (WASM_I32, WASM_F32, WASM_F32, WASM_F32, WASM_F32), ()) { + glad_glVertexAttrib4f(P(0, i32), P(1, f32), P(2, f32), P(3, f32), P(4, f32)); + return NULL; +} + +ONYX_DEF(glVertexAttrib4fv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttrib4fv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttribPointer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glVertexAttribPointer(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), ONYX_PTR(P(5, i32))); + return NULL; +} + +ONYX_DEF(glViewport, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glViewport(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glReadBuffer, (WASM_I32), ()) { + glad_glReadBuffer(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDrawRangeElements, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glDrawRangeElements(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), ONYX_PTR(P(5, i32))); + return NULL; +} + +ONYX_DEF(glTexImage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexImage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32), ONYX_PTR(P(9, i32))); + return NULL; +} + +ONYX_DEF(glTexSubImage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexSubImage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32), P(9, i32), ONYX_PTR(P(10, i32))); + return NULL; +} + +ONYX_DEF(glCopyTexSubImage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCopyTexSubImage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32)); + return NULL; +} + +ONYX_DEF(glCompressedTexImage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCompressedTexImage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), ONYX_PTR(P(8, i32))); + return NULL; +} + +ONYX_DEF(glCompressedTexSubImage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCompressedTexSubImage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32), P(9, i32), ONYX_PTR(P(10, i32))); + return NULL; +} + +ONYX_DEF(glGenQueries, (WASM_I32, WASM_I32), ()) { + glad_glGenQueries(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDeleteQueries, (WASM_I32, WASM_I32), ()) { + glad_glDeleteQueries(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glIsQuery, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsQuery(P(0, i32))); + return NULL; +} + +ONYX_DEF(glBeginQuery, (WASM_I32, WASM_I32), ()) { + glad_glBeginQuery(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glEndQuery, (WASM_I32), ()) { + glad_glEndQuery(P(0, i32)); + return NULL; +} + +ONYX_DEF(glGetQueryiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetQueryiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetQueryObjectuiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetQueryObjectuiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUnmapBuffer, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glUnmapBuffer(P(0, i32))); + return NULL; +} + +ONYX_DEF(glGetBufferPointerv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetBufferPointerv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glDrawBuffers, (WASM_I32, WASM_I32), ()) { + glad_glDrawBuffers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix2x3fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix2x3fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix3x2fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix3x2fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix2x4fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix2x4fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix4x2fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix4x2fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix3x4fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix3x4fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glUniformMatrix4x3fv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformMatrix4x3fv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glBlitFramebuffer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBlitFramebuffer(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32), P(6, i32), P(7, i32), P(8, i32), P(9, i32)); + return NULL; +} + +ONYX_DEF(glRenderbufferStorageMultisample, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glRenderbufferStorageMultisample(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glFramebufferTextureLayer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glFramebufferTextureLayer(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glMapBufferRange, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glMapBufferRange(P(0, i32), P(1, i32), P(2, i32), P(3, i32))); + return NULL; +} + +ONYX_DEF(glFlushMappedBufferRange, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glFlushMappedBufferRange(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glBindVertexArray, (WASM_I32), ()) { + glad_glBindVertexArray(P(0, i32)); + return NULL; +} + +ONYX_DEF(glDeleteVertexArrays, (WASM_I32, WASM_I32), ()) { + glad_glDeleteVertexArrays(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGenVertexArrays, (WASM_I32, WASM_I32), ()) { + glad_glGenVertexArrays(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glIsVertexArray, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsVertexArray(P(0, i32))); + return NULL; +} + +ONYX_DEF(glGetIntegeri_v, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetIntegeri_v(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glBeginTransformFeedback, (WASM_I32), ()) { + glad_glBeginTransformFeedback(P(0, i32)); + return NULL; +} + +ONYX_DEF(glEndTransformFeedback, (), ()) { + glad_glEndTransformFeedback(); + return NULL; +} + +ONYX_DEF(glBindBufferRange, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBindBufferRange(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glBindBufferBase, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glBindBufferBase(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glTransformFeedbackVaryings, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTransformFeedbackVaryings(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), P(3, i32)); + return NULL; +} + +ONYX_DEF(glGetTransformFeedbackVarying, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetTransformFeedbackVarying(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32)), ONYX_PTR(P(4, i32)), ONYX_PTR(P(5, i32)), ONYX_PTR(P(6, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttribIPointer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glVertexAttribIPointer(P(0, i32), P(1, i32), P(2, i32), P(3, i32), ONYX_PTR(P(4, i32))); + return NULL; +} + +ONYX_DEF(glGetVertexAttribIiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetVertexAttribIiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetVertexAttribIuiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetVertexAttribIuiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttribI4i, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glVertexAttribI4i(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glVertexAttribI4ui, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glVertexAttribI4ui(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glVertexAttribI4iv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttribI4iv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttribI4uiv, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttribI4uiv(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetUniformuiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetUniformuiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetFragDataLocation, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glGetFragDataLocation(P(0, i32), ONYX_PTR(P(1, i32)))); + return NULL; +} + +ONYX_DEF(glUniform1ui, (WASM_I32, WASM_I32), ()) { + glad_glUniform1ui(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glUniform2ui, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform2ui(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glUniform3ui, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform3ui(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glUniform4ui, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform4ui(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glUniform1uiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform1uiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform2uiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform2uiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform3uiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform3uiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glUniform4uiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniform4uiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glClearBufferiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glClearBufferiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glClearBufferuiv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glClearBufferuiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glClearBufferfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glClearBufferfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glClearBufferfi, (WASM_I32, WASM_I32, WASM_F32, WASM_I32), ()) { + glad_glClearBufferfi(P(0, i32), P(1, i32), P(2, f32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glGetStringi, (WASM_I32, WASM_I32), (WASM_I64)) { + results->data[0] = WASM_I64_VAL(glad_glGetStringi(P(0, i32), P(1, i32))); + return NULL; +} + +ONYX_DEF(glCopyBufferSubData, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glCopyBufferSubData(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glGetUniformIndices, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetUniformIndices(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetActiveUniformsiv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetActiveUniformsiv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), P(3, i32), ONYX_PTR(P(4, i32))); + return NULL; +} + +ONYX_DEF(glGetUniformBlockIndex, (WASM_I32, WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glGetUniformBlockIndex(P(0, i32), ONYX_PTR(P(1, i32)))); + return NULL; +} + +ONYX_DEF(glGetActiveUniformBlockiv, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetActiveUniformBlockiv(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32))); + return NULL; +} + +ONYX_DEF(glGetActiveUniformBlockName, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetActiveUniformBlockName(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32)), ONYX_PTR(P(4, i32))); + return NULL; +} + +ONYX_DEF(glUniformBlockBinding, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glUniformBlockBinding(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glDrawArraysInstanced, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glDrawArraysInstanced(P(0, i32), P(1, i32), P(2, i32), P(3, i32)); + return NULL; +} + +ONYX_DEF(glDrawElementsInstanced, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glDrawElementsInstanced(P(0, i32), P(1, i32), P(2, i32), ONYX_PTR(P(3, i32)), P(4, i32)); + return NULL; +} + +ONYX_DEF(glGetInteger64v, (WASM_I32, WASM_I32), ()) { + glad_glGetInteger64v(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGetInteger64i_v, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetInteger64i_v(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetBufferParameteri64v, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetBufferParameteri64v(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGenSamplers, (WASM_I32, WASM_I32), ()) { + glad_glGenSamplers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glDeleteSamplers, (WASM_I32, WASM_I32), ()) { + glad_glDeleteSamplers(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glIsSampler, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsSampler(P(0, i32))); + return NULL; +} + +ONYX_DEF(glBindSampler, (WASM_I32, WASM_I32), ()) { + glad_glBindSampler(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glSamplerParameteri, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glSamplerParameteri(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glSamplerParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glSamplerParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glSamplerParameterf, (WASM_I32, WASM_I32, WASM_F32), ()) { + glad_glSamplerParameterf(P(0, i32), P(1, i32), P(2, f32)); + return NULL; +} + +ONYX_DEF(glSamplerParameterfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glSamplerParameterfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetSamplerParameteriv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetSamplerParameteriv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glGetSamplerParameterfv, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetSamplerParameterfv(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glVertexAttribDivisor, (WASM_I32, WASM_I32), ()) { + glad_glVertexAttribDivisor(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glBindTransformFeedback, (WASM_I32, WASM_I32), ()) { + glad_glBindTransformFeedback(P(0, i32), P(1, i32)); + return NULL; +} + +ONYX_DEF(glDeleteTransformFeedbacks, (WASM_I32, WASM_I32), ()) { + glad_glDeleteTransformFeedbacks(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glGenTransformFeedbacks, (WASM_I32, WASM_I32), ()) { + glad_glGenTransformFeedbacks(P(0, i32), ONYX_PTR(P(1, i32))); + return NULL; +} + +ONYX_DEF(glIsTransformFeedback, (WASM_I32), (WASM_I32)) { + results->data[0] = WASM_I32_VAL(glad_glIsTransformFeedback(P(0, i32))); + return NULL; +} + +ONYX_DEF(glPauseTransformFeedback, (), ()) { + glad_glPauseTransformFeedback(); + return NULL; +} + +ONYX_DEF(glResumeTransformFeedback, (), ()) { + glad_glResumeTransformFeedback(); + return NULL; +} + +ONYX_DEF(glGetProgramBinary, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetProgramBinary(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), ONYX_PTR(P(3, i32)), ONYX_PTR(P(4, i32))); + return NULL; +} + +ONYX_DEF(glProgramBinary, (WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glProgramBinary(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), P(3, i32)); + return NULL; +} + +ONYX_DEF(glProgramParameteri, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glProgramParameteri(P(0, i32), P(1, i32), P(2, i32)); + return NULL; +} + +ONYX_DEF(glInvalidateFramebuffer, (WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glInvalidateFramebuffer(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32))); + return NULL; +} + +ONYX_DEF(glInvalidateSubFramebuffer, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glInvalidateSubFramebuffer(P(0, i32), P(1, i32), ONYX_PTR(P(2, i32)), P(3, i32), P(4, i32), P(5, i32), P(6, i32)); + return NULL; +} + +ONYX_DEF(glTexStorage2D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexStorage2D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32)); + return NULL; +} + +ONYX_DEF(glTexStorage3D, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glTexStorage3D(P(0, i32), P(1, i32), P(2, i32), P(3, i32), P(4, i32), P(5, i32)); + return NULL; +} + +ONYX_DEF(glGetInternalformativ, (WASM_I32, WASM_I32, WASM_I32, WASM_I32, WASM_I32), ()) { + glad_glGetInternalformativ(P(0, i32), P(1, i32), P(2, i32), P(3, i32), ONYX_PTR(P(4, i32))); + return NULL; +} + + + +ONYX_LIBRARY { + ONYX_FUNC(glInit) + ONYX_FUNC(glActiveTexture) + ONYX_FUNC(glAttachShader) + ONYX_FUNC(glBindAttribLocation) + ONYX_FUNC(glBindBuffer) + ONYX_FUNC(glBindFramebuffer) + ONYX_FUNC(glBindRenderbuffer) + ONYX_FUNC(glBindTexture) + ONYX_FUNC(glBlendColor) + ONYX_FUNC(glBlendEquation) + ONYX_FUNC(glBlendEquationSeparate) + ONYX_FUNC(glBlendFunc) + ONYX_FUNC(glBlendFuncSeparate) + ONYX_FUNC(glBufferData) + ONYX_FUNC(glBufferSubData) + ONYX_FUNC(glCheckFramebufferStatus) + ONYX_FUNC(glClear) + ONYX_FUNC(glClearColor) + ONYX_FUNC(glClearDepthf) + ONYX_FUNC(glClearStencil) + ONYX_FUNC(glColorMask) + ONYX_FUNC(glCompileShader) + ONYX_FUNC(glCompressedTexImage2D) + ONYX_FUNC(glCompressedTexSubImage2D) + ONYX_FUNC(glCopyTexImage2D) + ONYX_FUNC(glCopyTexSubImage2D) + ONYX_FUNC(glCreateProgram) + ONYX_FUNC(glCreateShader) + ONYX_FUNC(glCullFace) + ONYX_FUNC(glDeleteBuffers) + ONYX_FUNC(glDeleteFramebuffers) + ONYX_FUNC(glDeleteProgram) + ONYX_FUNC(glDeleteRenderbuffers) + ONYX_FUNC(glDeleteShader) + ONYX_FUNC(glDeleteTextures) + ONYX_FUNC(glDepthFunc) + ONYX_FUNC(glDepthMask) + ONYX_FUNC(glDepthRangef) + ONYX_FUNC(glDetachShader) + ONYX_FUNC(glDisable) + ONYX_FUNC(glDisableVertexAttribArray) + ONYX_FUNC(glDrawArrays) + ONYX_FUNC(glDrawElements) + ONYX_FUNC(glEnable) + ONYX_FUNC(glEnableVertexAttribArray) + ONYX_FUNC(glFinish) + ONYX_FUNC(glFlush) + ONYX_FUNC(glFramebufferRenderbuffer) + ONYX_FUNC(glFramebufferTexture2D) + ONYX_FUNC(glFrontFace) + ONYX_FUNC(glGenBuffers) + ONYX_FUNC(glGenerateMipmap) + ONYX_FUNC(glGenFramebuffers) + ONYX_FUNC(glGenRenderbuffers) + ONYX_FUNC(glGenTextures) + ONYX_FUNC(glGetActiveAttrib) + ONYX_FUNC(glGetActiveUniform) + ONYX_FUNC(glGetAttachedShaders) + ONYX_FUNC(glGetAttribLocation) + ONYX_FUNC(glGetBooleanv) + ONYX_FUNC(glGetBufferParameteriv) + ONYX_FUNC(glGetError) + ONYX_FUNC(glGetFloatv) + ONYX_FUNC(glGetFramebufferAttachmentParameteriv) + ONYX_FUNC(glGetIntegerv) + ONYX_FUNC(glGetProgramiv) + ONYX_FUNC(glGetProgramInfoLog) + ONYX_FUNC(glGetRenderbufferParameteriv) + ONYX_FUNC(glGetShaderiv) + ONYX_FUNC(glGetShaderInfoLog) + ONYX_FUNC(glGetShaderPrecisionFormat) + ONYX_FUNC(glGetShaderSource) + ONYX_FUNC(glGetString) + ONYX_FUNC(glGetTexParameterfv) + ONYX_FUNC(glGetTexParameteriv) + ONYX_FUNC(glGetUniformfv) + ONYX_FUNC(glGetUniformiv) + ONYX_FUNC(glGetUniformLocation) + ONYX_FUNC(glGetVertexAttribfv) + ONYX_FUNC(glGetVertexAttribiv) + ONYX_FUNC(glGetVertexAttribPointerv) + ONYX_FUNC(glHint) + ONYX_FUNC(glIsBuffer) + ONYX_FUNC(glIsEnabled) + ONYX_FUNC(glIsFramebuffer) + ONYX_FUNC(glIsProgram) + ONYX_FUNC(glIsRenderbuffer) + ONYX_FUNC(glIsShader) + ONYX_FUNC(glIsTexture) + ONYX_FUNC(glLineWidth) + ONYX_FUNC(glLinkProgram) + ONYX_FUNC(glPixelStorei) + ONYX_FUNC(glPolygonOffset) + ONYX_FUNC(glReadPixels) + ONYX_FUNC(glReleaseShaderCompiler) + ONYX_FUNC(glRenderbufferStorage) + ONYX_FUNC(glSampleCoverage) + ONYX_FUNC(glScissor) + ONYX_FUNC(glShaderBinary) + ONYX_FUNC(glShaderSource) + ONYX_FUNC(glStencilFunc) + ONYX_FUNC(glStencilFuncSeparate) + ONYX_FUNC(glStencilMask) + ONYX_FUNC(glStencilMaskSeparate) + ONYX_FUNC(glStencilOp) + ONYX_FUNC(glStencilOpSeparate) + ONYX_FUNC(glTexImage2D) + ONYX_FUNC(glTexParameterf) + ONYX_FUNC(glTexParameterfv) + ONYX_FUNC(glTexParameteri) + ONYX_FUNC(glTexParameteriv) + ONYX_FUNC(glTexSubImage2D) + ONYX_FUNC(glUniform1f) + ONYX_FUNC(glUniform1fv) + ONYX_FUNC(glUniform1i) + ONYX_FUNC(glUniform1iv) + ONYX_FUNC(glUniform2f) + ONYX_FUNC(glUniform2fv) + ONYX_FUNC(glUniform2i) + ONYX_FUNC(glUniform2iv) + ONYX_FUNC(glUniform3f) + ONYX_FUNC(glUniform3fv) + ONYX_FUNC(glUniform3i) + ONYX_FUNC(glUniform3iv) + ONYX_FUNC(glUniform4f) + ONYX_FUNC(glUniform4fv) + ONYX_FUNC(glUniform4i) + ONYX_FUNC(glUniform4iv) + ONYX_FUNC(glUniformMatrix2fv) + ONYX_FUNC(glUniformMatrix3fv) + ONYX_FUNC(glUniformMatrix4fv) + ONYX_FUNC(glUseProgram) + ONYX_FUNC(glValidateProgram) + ONYX_FUNC(glVertexAttrib1f) + ONYX_FUNC(glVertexAttrib1fv) + ONYX_FUNC(glVertexAttrib2f) + ONYX_FUNC(glVertexAttrib2fv) + ONYX_FUNC(glVertexAttrib3f) + ONYX_FUNC(glVertexAttrib3fv) + ONYX_FUNC(glVertexAttrib4f) + ONYX_FUNC(glVertexAttrib4fv) + ONYX_FUNC(glVertexAttribPointer) + ONYX_FUNC(glViewport) + ONYX_FUNC(glReadBuffer) + ONYX_FUNC(glDrawRangeElements) + ONYX_FUNC(glTexImage3D) + ONYX_FUNC(glTexSubImage3D) + ONYX_FUNC(glCopyTexSubImage3D) + ONYX_FUNC(glCompressedTexImage3D) + ONYX_FUNC(glCompressedTexSubImage3D) + ONYX_FUNC(glGenQueries) + ONYX_FUNC(glDeleteQueries) + ONYX_FUNC(glIsQuery) + ONYX_FUNC(glBeginQuery) + ONYX_FUNC(glEndQuery) + ONYX_FUNC(glGetQueryiv) + ONYX_FUNC(glGetQueryObjectuiv) + ONYX_FUNC(glUnmapBuffer) + ONYX_FUNC(glGetBufferPointerv) + ONYX_FUNC(glDrawBuffers) + ONYX_FUNC(glUniformMatrix2x3fv) + ONYX_FUNC(glUniformMatrix3x2fv) + ONYX_FUNC(glUniformMatrix2x4fv) + ONYX_FUNC(glUniformMatrix4x2fv) + ONYX_FUNC(glUniformMatrix3x4fv) + ONYX_FUNC(glUniformMatrix4x3fv) + ONYX_FUNC(glBlitFramebuffer) + ONYX_FUNC(glRenderbufferStorageMultisample) + ONYX_FUNC(glFramebufferTextureLayer) + ONYX_FUNC(glMapBufferRange) + ONYX_FUNC(glFlushMappedBufferRange) + ONYX_FUNC(glBindVertexArray) + ONYX_FUNC(glDeleteVertexArrays) + ONYX_FUNC(glGenVertexArrays) + ONYX_FUNC(glIsVertexArray) + ONYX_FUNC(glGetIntegeri_v) + ONYX_FUNC(glBeginTransformFeedback) + ONYX_FUNC(glEndTransformFeedback) + ONYX_FUNC(glBindBufferRange) + ONYX_FUNC(glBindBufferBase) + ONYX_FUNC(glTransformFeedbackVaryings) + ONYX_FUNC(glGetTransformFeedbackVarying) + ONYX_FUNC(glVertexAttribIPointer) + ONYX_FUNC(glGetVertexAttribIiv) + ONYX_FUNC(glGetVertexAttribIuiv) + ONYX_FUNC(glVertexAttribI4i) + ONYX_FUNC(glVertexAttribI4ui) + ONYX_FUNC(glVertexAttribI4iv) + ONYX_FUNC(glVertexAttribI4uiv) + ONYX_FUNC(glGetUniformuiv) + ONYX_FUNC(glGetFragDataLocation) + ONYX_FUNC(glUniform1ui) + ONYX_FUNC(glUniform2ui) + ONYX_FUNC(glUniform3ui) + ONYX_FUNC(glUniform4ui) + ONYX_FUNC(glUniform1uiv) + ONYX_FUNC(glUniform2uiv) + ONYX_FUNC(glUniform3uiv) + ONYX_FUNC(glUniform4uiv) + ONYX_FUNC(glClearBufferiv) + ONYX_FUNC(glClearBufferuiv) + ONYX_FUNC(glClearBufferfv) + ONYX_FUNC(glClearBufferfi) + ONYX_FUNC(glGetStringi) + ONYX_FUNC(glCopyBufferSubData) + ONYX_FUNC(glGetUniformIndices) + ONYX_FUNC(glGetActiveUniformsiv) + ONYX_FUNC(glGetUniformBlockIndex) + ONYX_FUNC(glGetActiveUniformBlockiv) + ONYX_FUNC(glGetActiveUniformBlockName) + ONYX_FUNC(glUniformBlockBinding) + ONYX_FUNC(glDrawArraysInstanced) + ONYX_FUNC(glDrawElementsInstanced) + ONYX_FUNC(glGetInteger64v) + ONYX_FUNC(glGetInteger64i_v) + ONYX_FUNC(glGetBufferParameteri64v) + ONYX_FUNC(glGenSamplers) + ONYX_FUNC(glDeleteSamplers) + ONYX_FUNC(glIsSampler) + ONYX_FUNC(glBindSampler) + ONYX_FUNC(glSamplerParameteri) + ONYX_FUNC(glSamplerParameteriv) + ONYX_FUNC(glSamplerParameterf) + ONYX_FUNC(glSamplerParameterfv) + ONYX_FUNC(glGetSamplerParameteriv) + ONYX_FUNC(glGetSamplerParameterfv) + ONYX_FUNC(glVertexAttribDivisor) + ONYX_FUNC(glBindTransformFeedback) + ONYX_FUNC(glDeleteTransformFeedbacks) + ONYX_FUNC(glGenTransformFeedbacks) + ONYX_FUNC(glIsTransformFeedback) + ONYX_FUNC(glPauseTransformFeedback) + ONYX_FUNC(glResumeTransformFeedback) + ONYX_FUNC(glGetProgramBinary) + ONYX_FUNC(glProgramBinary) + ONYX_FUNC(glProgramParameteri) + ONYX_FUNC(glInvalidateFramebuffer) + ONYX_FUNC(glInvalidateSubFramebuffer) + ONYX_FUNC(glTexStorage2D) + ONYX_FUNC(glTexStorage3D) + ONYX_FUNC(glGetInternalformativ) + NULL +}; \ No newline at end of file diff --git a/scripts/c_binding.onyx b/scripts/c_binding.onyx index 9ac549b4..95e41aef 100644 --- a/scripts/c_binding.onyx +++ b/scripts/c_binding.onyx @@ -24,6 +24,7 @@ Binding_Config :: struct { output_file: str; cast_map: [] Cast_Mapping; custom_implementations: [] Impl_Mapping; + name_map: (str) -> str = null_proc; } build_c_binding :: (use binding_config: Binding_Config) -> bool { @@ -42,7 +43,7 @@ build_c_binding :: (use binding_config: Binding_Config) -> bool { } } - write_function_body(^writer, it, cast_map); + write_function_body(^writer, it, cast_map, name_map); } write_library_block(^writer, fb.funcs); @@ -69,7 +70,7 @@ write_file_introduction :: (writer: ^io.Writer, preamble: [] str, name: str) { """, name); } -write_function_body :: (writer, ff, cast_map) => { +write_function_body :: (writer, ff, cast_map, name_map) => { use info; method_type := ff.type; @@ -90,7 +91,14 @@ write_function_body :: (writer, ff, cast_map) => { io.write(writer, "), ("); io.write(writer, type_encoding(method_info.return_type)); io.write(writer, ")) {\n"); - print_body(writer, ff.name, method_info, cast_map); + + method_name := ff.name; + if name_map != null_proc { + method_name = name_map(method_name); + } + + print_body(writer, method_name, method_info, cast_map); + io.write(writer, "}\n\n"); } diff --git a/scripts/c_library.onyx b/scripts/c_library.onyx index 33c84a57..69cef4ee 100644 --- a/scripts/c_library.onyx +++ b/scripts/c_library.onyx @@ -19,7 +19,7 @@ module_path :: (file_path: str) -> str { return out; } -compile_c_file :: (path: str, dest: str, includes: [] str = .[], flags := "") -> bool { +compile_c_file :: (path: str, dest: str, includes: [] str = .[], libraries: [] str = .[], flags := "") -> bool { printf("Compiling '{}' -> '{}'.\n", path, dest); #if runtime.compiler_os == .Linux { @@ -29,9 +29,7 @@ compile_c_file :: (path: str, dest: str, includes: [] str = .[], flags := "") -> args << path; args << "-I"; - args << "include"; - args << "-I"; - args << "lib/common/include"; + args << "/usr/share/onyx/include"; for includes { args << "-I"; @@ -45,6 +43,10 @@ compile_c_file :: (path: str, dest: str, includes: [] str = .[], flags := "") -> args << "-o"; args << dest; + for libraries { + args << aprintf("-l{}", it); + } + proc := os.process_spawn(Linux_Compiler, args); defer os.process_destroy(^proc); @@ -55,9 +57,10 @@ compile_c_file :: (path: str, dest: str, includes: [] str = .[], flags := "") -> exit := os.process_wait(^proc); println(exit); println(output); + return exit == .Success; } #if runtime.compiler_os == .Windows { - + return true; } } \ No newline at end of file