Not necessarily: You can also use DRM/GBM(?). See this code (run with ./kmscube -D /dev/dri/card1) linked previously. It calls eglCreateWindowSurface(egl->display, egl->config, (EGLNativeWindowType)gbm->surface, NULL); When used similarly to that in my existing code, I get some odd screen flickerin...
I have no idea what you have done, but there most certainly is full support for the V3D gpu. https://gitlab.freedesktop.org/mesa/mesa/tree/master/src/gallium/winsys/v3d/drm and the various other V3D bits within that mesa repo. I'm wondering if there is full support for the V3D gpu in the rpi4 then ...