Switch to WebGL2, add missing file packager patch
parent
94e47b8b28
commit
c967aba3a1
|
@ -14,8 +14,7 @@ Pre-requisites
|
|||
--------------
|
||||
The Emscripten SDK (emsdk) must be installed, activated, and in the PATH.
|
||||
It is assumed to be installed in $HOME/emsdk (edit `common.sh` to change this).
|
||||
|
||||
Apply the patch `emcc.patch` to the emsdk directory. This is needed for configure to work with pthreads.
|
||||
The emsdk directory must be patched by running `./apply_patches.sh` exactly once.
|
||||
|
||||
Building
|
||||
---------
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash -eu
|
||||
|
||||
source common.sh
|
||||
|
||||
cd "$EMSDK_ROOT"
|
||||
|
||||
patch -p1 < "$BASE_DIR/emsdk_emcc.patch"
|
||||
patch -p1 < "$BASE_DIR/emsdk_file_packager.patch"
|
||||
patch -p1 < "$BASE_DIR/emsdk_fix_webgl.patch"
|
|
@ -14,7 +14,7 @@ pushd minetest
|
|||
export EMSDK_EXTRA="-sUSE_SDL=2"
|
||||
export CFLAGS="$CFLAGS $EMSDK_EXTRA"
|
||||
export CXXFLAGS="$CXXFLAGS $EMSDK_EXTRA"
|
||||
export LDFLAGS="$LDFLAGS $EMSDK_EXTRA -sPTHREAD_POOL_SIZE=20 -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s INITIAL_MEMORY=2013265920"
|
||||
export LDFLAGS="$LDFLAGS $EMSDK_EXTRA -sPTHREAD_POOL_SIZE=20 -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s INITIAL_MEMORY=2013265920 -sMIN_WEBGL_VERSION=2 -sUSE_WEBGL2"
|
||||
export LDFLAGS="$LDFLAGS -L$INSTALL_DIR/lib -lssl -lcrypto -lemsocket -lwebsocket.js"
|
||||
|
||||
# Used by CMakeFiles.txt in the webport
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
--- emsdk1/upstream/emscripten/tools/file_packager.py 2022-03-24 19:45:39.000000000 +0000
|
||||
+++ emsdk2/upstream/emscripten/tools/file_packager.py 2022-03-22 10:13:11.332849695 +0000
|
||||
@@ -686,8 +686,12 @@
|
||||
use_data = '''// Reuse the bytearray from the XHR as the source for file reads.
|
||||
DataRequest.prototype.byteArray = byteArray;
|
||||
var files = metadata['files'];
|
||||
+ function make_callback(i) {
|
||||
+ var req = DataRequest.prototype.requests[files[i].filename];
|
||||
+ return () => {req.onload()};
|
||||
+ }
|
||||
for (var i = 0; i < files.length; ++i) {
|
||||
- DataRequest.prototype.requests[files[i].filename].onload();
|
||||
+ setTimeout(make_callback(i));
|
||||
}'''
|
||||
use_data += (" Module['removeRunDependency']('datafile_%s');\n"
|
||||
% js_manipulation.escape_for_js_string(data_target))
|
|
@ -0,0 +1,25 @@
|
|||
diff -urN emsdk/upstream/emscripten/src/library_webgl.js emsdk-fixed/upstream/emscripten/src/library_webgl.js
|
||||
--- emsdk/upstream/emscripten/src/library_webgl.js 2022-03-24 19:45:37.000000000 +0000
|
||||
+++ emsdk-fixed/upstream/emscripten/src/library_webgl.js 2022-04-24 08:18:17.235609809 +0000
|
||||
@@ -1782,7 +1782,9 @@
|
||||
#if MAX_WEBGL_VERSION >= 2
|
||||
if ({{{ isCurrentContextWebGL2() }}}) { // WebGL 2 provides new garbage-free entry points to call to WebGL. Use those always when possible.
|
||||
if (data) {
|
||||
- GLctx.bufferData(target, HEAPU8, usage, data, size);
|
||||
+ if (size > 0) {
|
||||
+ GLctx.bufferData(target, HEAPU8, usage, data, size);
|
||||
+ }
|
||||
} else {
|
||||
GLctx.bufferData(target, size, usage);
|
||||
}
|
||||
@@ -1800,7 +1802,9 @@
|
||||
glBufferSubData: function(target, offset, size, data) {
|
||||
#if MAX_WEBGL_VERSION >= 2
|
||||
if ({{{ isCurrentContextWebGL2() }}}) { // WebGL 2 provides new garbage-free entry points to call to WebGL. Use those always when possible.
|
||||
- GLctx.bufferSubData(target, offset, HEAPU8, data, size);
|
||||
+ if (size > 0) {
|
||||
+ GLctx.bufferSubData(target, offset, HEAPU8, data, size);
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue