Closed jjYBdx4IL closed 2 years ago
Q1: At the moment, I've done very minimal optimization of the UI. At the moment, most of the ui load comes from the cpu, as it recalculates the positioning and styling of every element, every single frame. For example, disabling NanoVG rendering (by calling nvgCancel
before nvgEndFrame
) only improved the frame time by ~10% for me on Ubuntu 20.04.
Q2: I think I considered it back when I started the project but decided that using NanoVG and OpenGL would be simpler and less error-prone. Additionally, since I don't have access to a Mac, getting Vulkan to work using MoltenVK might be tricky? I've also considered using something like bgfx, but I've never gotten further than reading the documentation as it would be a lot of work and, as far as I'm aware, OpenGL works okay anyway. (Although I recently found out that the Raspberry Pi doesn't support OpenGL 3.0+)
P.S. I drafted this message last night before you closed the issue so I figured I may as well send it.
There is a metal backend for NanoVG. MoltenVK and NanoVG seems to be a particularly bad combination -- at least that's what I infer from what is being said about transcription performance over there: https://github.com/KhronosGroup/MoltenVK/issues/1533
First of all, ty for this great plugin, which I'll probably use as a reference implementation for LV2 plugins.
Question: have you tried any optimizations regarding UI rendering? Like buffering the background and knobs in a texture and only redrawing them when needed? I guess that's where most of the OpenGL load is coming from. Correct me if I'm wrong.
Another question: have you tried porting to Vulkan?