From b4c5a4b7c8bd3dd83b2296db5d4900e34616515a Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 2 Feb 2024 11:59:20 -0800 Subject: [PATCH] Fix glDrawElements under CAN_ADDRESS_2GB --- .circleci/config.yml | 3 +++ src/library_glemu.js | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 01ae69b86c286..b13bb169e4744 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -818,6 +818,9 @@ jobs: browser_2gb.test_fetch_to_memory browser_2gb.test_emscripten_animate_canvas_element_size_manual_css browser_2gb.test_fulles2_sdlproc + browser_2gb.test_cubegeom + browser_2gb.test_cubegeom_normal + browser_2gb.test_cubegeom_normal_dap " test-browser-chrome-wasm64-4gb: executor: bionic diff --git a/src/library_glemu.js b/src/library_glemu.js index f774dcf201316..553fc112082b1 100644 --- a/src/library_glemu.js +++ b/src/library_glemu.js @@ -3527,8 +3527,10 @@ var LibraryGLEmulation = { GLImmediate.mode = mode; if (!GLctx.currentArrayBufferBinding) { GLImmediate.firstVertex = end ? start : HEAP8.length; // if we don't know the start, set an invalid value and we will calculate it later from the indices - GLImmediate.lastVertex = end ? end+1 : 0; - GLImmediate.vertexData = HEAPF32.subarray(GLImmediate.vertexPointer >> 2, end ? (GLImmediate.vertexPointer + (end+1)*GLImmediate.stride) >> 2 : undefined); // XXX assuming float + GLImmediate.lastVertex = end ? end + 1 : 0; + start = GLImmediate.vertexPointer; + end = end ? GLImmediate.vertexPointer + (end+1)*GLImmediate.stride : undefined; + GLImmediate.vertexData = HEAPF32.subarray({{{ getHeapOffset('start', 'float') }}}, end ? {{{ getHeapOffset('end', 'float') }}} : undefined); } GLImmediate.flush(count, 0, indices); GLImmediate.mode = -1;