Skip to content

Commit

Permalink
Disable *glGetProcAddress() on the web
Browse files Browse the repository at this point in the history
  • Loading branch information
dsnopek committed Jun 24, 2024
1 parent 8a6c1e8 commit 8e242fe
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 5 deletions.
2 changes: 1 addition & 1 deletion drivers/gles3/rasterizer_gles3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@

#if !defined(IOS_ENABLED) && !defined(WEB_ENABLED)
// We include EGL below to get debug callback on GLES2 platforms,
// but EGL is not available on iOS.
// but EGL is not available on iOS or the web.
#define CAN_DEBUG
#endif

Expand Down
7 changes: 3 additions & 4 deletions platform/web/detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,11 +207,10 @@ def configure(env: "SConsEnvironment"):
env.Append(LINKFLAGS=["-sMAX_WEBGL_VERSION=2"])
# Allow use to take control of swapping WebGL buffers.
env.Append(LINKFLAGS=["-sOFFSCREEN_FRAMEBUFFER=1"])
# Breaking change since emscripten 3.1.51
# https://github.com/emscripten-core/emscripten/blob/main/ChangeLog.md#3151---121323
# Disables the use of *glGetProcAddress() which is inefficient.
# See https://emscripten.org/docs/tools_reference/settings_reference.html#gl-enable-get-proc-address
if cc_semver >= (3, 1, 51):
# Enables the use of *glGetProcAddress()
env.Append(LINKFLAGS=["-sGL_ENABLE_GET_PROC_ADDRESS=1"])
env.Append(LINKFLAGS=["-sGL_ENABLE_GET_PROC_ADDRESS=0"])

if env["javascript_eval"]:
env.Append(CPPDEFINES=["JAVASCRIPT_EVAL_ENABLED"])
Expand Down
4 changes: 4 additions & 0 deletions platform/web/platform_gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
#define GLES_API_ENABLED // Allow using GLES.
#endif

// Make using *glGetProcAddress() an error on the web.
#define glGetProcAddress(n) static_assert(false, "Usage of glGetProcessAddress() on the web is a bug.")
#define eglGetProcAddress(n) static_assert(false, "Usage of eglGetProcessAddress() on the web is a bug.")

#include "platform/web/godot_webgl2.h"

#endif // PLATFORM_GL_H

0 comments on commit 8e242fe

Please sign in to comment.