I went back to looking into this again today. I've seen a bunch of threads around where people talk about vlc and using kms for hardware acceleration, so it seems like it is maybe supposed to work?
I captured the output from running it. The output looks identical regardless of whether I'm using FKMS or KMS. With FKMS, the image correctly shows on the screen (either hdmi0 or hdmi1, whatever I specify). With KMS, the output is the same, but the screen still just displays the terminal, nothing else shows up on either display.
Is there some other place I can look for errors, some other log file maybe?
Here's what the output is:
$ cvlc /home/pi/PieMarquee2/marquee/system/snes.png
VLC media player 3.0.12 Vetinari (revision 3.0.12-1-0-gd147bb5e7e)
[015a11d0] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[015a2ac8] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[015a2ac8] main interface error: no suitable interface module
[01528b58] main libvlc error: interface "dbus,none" initialization failed
[015bc2a0] main interface error: no suitable interface module
[01528b58] main libvlc error: interface "globalhotkeys,none" initialization failed
[015bc2a0] dummy interface: using the dummy interface module...
[aab014b0] gles2 generic error: parent window not available
[aab00ca0] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module
[aab014b0] xcb generic error: window not available
[aab00ca0] mmal_xsplitter vout display error: Failed to open Xsplitter:xcb_x11 module