I found a functional solution, albeit imperfect, for when I want to use vc4-kms-v3d mode, but also have a usable VNC resolution.
You can of course change the resolution using xrandr, but you first have to convince xrandr that it should let you. ;-)
To do that, you need to generate the appropriate "mode" settings.
The easiest way to do that is by using the "cvt" command.
Here I am using 1280x1024 @ 60 Hz as an example of the desired resolution.
$ cvt 1280 1024 60
# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
You also need to know what screen VNC is using, which you can find out by logging in with the default resolution still in effect.
The xrandr command has the goods:
Screen 0: minimum 320 x 200, current 720 x 480, maximum 2048 x 2048
HDMI-1 disconnected primary (normal left inverted right x axis y axis)
Composite-1 unknown connection (normal left inverted right x axis y axis)
In my case it was pretty obvious, because I am not using HDMI and the only other choice was "Composite-1" which also shows the defaul 720x480 resolution. =D
Armed with all of that info, you can set the resolution as follows, by pasting the string from after "Modeline" in the cvt output.
Here I took the liberty of simplifying the "1280x1024_60.00" to just "1280x1024_60" and then used that consistently:
xrandr --newmode "1280x1024_60" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
xrandr --addmode Composite-1 1280x1024_60
xrandr -s 1280x1024_60
I wasn't satisfied with having to run that every time I logged in, so I made it a system-wide change as follows:
$ sudoedit /etc/xdg/autostart/set-vnc-resolution.desktop
To which I added the following lines:
Exec=/bin/bash -c "xrandr --newmode "1280x1024_60" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync && xrandr --addmode Composite-1 1280x1024_60 && xrandr -s 1280x1024_60"
So, now, the initial VNC login screen is still only 720x480, but a few seconds after login, it changes to 1280x1024.
It disconnects me and I have to reconnect, but after that point it stays at 1280x1024 until the next reboot.
That disconnect / reconnect part is why I say it is an imperfect solution, but it's one that I can live with. =D
HTH someone. =D