From 498d0b6e54439bc9911374deb88184ccfd97d4f1 Mon Sep 17 00:00:00 2001 From: SnapperTT <4939563+SnapperTT@users.noreply.github.com> Date: Mon, 20 Jun 2022 21:37:59 +1000 Subject: [PATCH] Update nanovg_bgfx.cpp (#2823) Fix the transient vertex buffer's overflow assert being fired. Now if the tvb is overflowed a warning is emitted and the draw is skipped --- examples/common/nanovg/nanovg_bgfx.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/examples/common/nanovg/nanovg_bgfx.cpp b/examples/common/nanovg/nanovg_bgfx.cpp index ba551371d..39009f517 100644 --- a/examples/common/nanovg/nanovg_bgfx.cpp +++ b/examples/common/nanovg/nanovg_bgfx.cpp @@ -762,12 +762,21 @@ namespace if (gl->ncalls > 0) { + int avail = bgfx::getAvailTransientVertexBuffer(gl->nverts, s_nvgLayout); + if (avail < gl->nverts) + { + gl->nverts = avail; + BX_WARN(true, "Vertex number truncated due to transient vertex buffer overflow"); + if (gl->nverts < 2) + goto _cleanup; + } bgfx::allocTransientVertexBuffer(&gl->tvb, gl->nverts, s_nvgLayout); int allocated = gl->tvb.size/gl->tvb.stride; if (allocated < gl->nverts) { + // this branch should never be taken as we've already checked the transient vertex buffer size gl->nverts = allocated; BX_WARN(true, "Vertex number truncated due to transient vertex buffer overflow"); } @@ -806,6 +815,7 @@ namespace } // Reset calls + _cleanup: gl->nverts = 0; gl->npaths = 0; gl->ncalls = 0;