From 9b636df330c81e11c84595651a291b6c59fb7396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Mon, 7 Sep 2026 13:58:25 -0700 Subject: [PATCH] GL: Don't toggle primitive restart on WebGL. Fixes #3967. (#3969) --- examples/common/args.h | 5 +++++ src/renderer_gl.cpp | 9 +++++---- src/renderer_webgpu.cpp | 11 ++++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/examples/common/args.h b/examples/common/args.h index dcdf3475e..bdb9fb785 100644 --- a/examples/common/args.h +++ b/examples/common/args.h @@ -3,6 +3,9 @@ * License: http://www.opensource.org/licenses/BSD-2-Clause */ +#ifndef ARGS_H_HEADER_GUARD +#define ARGS_H_HEADER_GUARD + #include #include @@ -104,3 +107,5 @@ struct Args bgfx::RendererType::Enum m_type; uint16_t m_pciId; }; + +#endif // ARGS_H_HEADER_GUARD diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 709fe5d2c..7607b1793 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -8485,10 +8485,11 @@ namespace bgfx { namespace gl } PrimInfo prim = s_primInfo[primIndex]; - const bool primitiveRestartSupported = false - || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) - || s_extension[Extension::ARB_ES3_compatibility].m_supported - ; + const bool primitiveRestartSupported = true + && !BX_ENABLED(BX_PLATFORM_EMSCRIPTEN) + && (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) + || s_extension[Extension::ARB_ES3_compatibility].m_supported + ); GL_CHECK(glPolygonMode(GL_FRONT_AND_BACK , _render->m_debug&BGFX_DEBUG_WIREFRAME diff --git a/src/renderer_webgpu.cpp b/src/renderer_webgpu.cpp index 1854b53fa..0e0c2bf72 100644 --- a/src/renderer_webgpu.cpp +++ b/src/renderer_webgpu.cpp @@ -4487,6 +4487,11 @@ WGPU_IMPORT return m_moduleBgra8; } + static uint8_t getNumBindGroupEntries(const ShaderBinding& _shaderBinding) + { + return ShaderBinding::Type::Sampler == _shaderBinding.type ? 2 : 1; + } + void ProgramWGPU::create(const ShaderWGPU* _vsh, const ShaderWGPU* _fsh) { BX_ASSERT(_vsh->m_module, "Vertex shader doesn't exist."); @@ -4525,7 +4530,7 @@ WGPU_IMPORT { shaderBind = m_vsh->m_shaderBinding[stage]; shaderBind.shaderStage = WGPUShaderStage_Compute; - numBindings++; + numBindings += getNumBindGroupEntries(shaderBind); } } } @@ -4540,13 +4545,13 @@ WGPU_IMPORT { shaderBind = m_vsh->m_shaderBinding[stage]; shaderBind.shaderStage = WGPUShaderStage_Vertex; - numBindings++; + numBindings += getNumBindGroupEntries(shaderBind); } else if (NULL != m_fsh && isValid(m_fsh->m_shaderBinding[stage].uniformHandle) ) { shaderBind = m_fsh->m_shaderBinding[stage]; shaderBind.shaderStage = WGPUShaderStage_Fragment; - numBindings += 2; + numBindings += getNumBindGroupEntries(shaderBind); } } }