Unfortunately I did only bare metal UVC camera project in the past and didn’t try myself the same on Linux. UVC supports not only compressed stream- and frame based payloads, but as well uncompressed frame based payload (either packed 4:2:2 YUV format (YUY2) or 4:2:0 YUV format (NV12)).
uvc-gadget
-f switch:
-f <format> Select frame format
0 = V4L2_PIX_FMT_YUYV
1 = V4L2_PIX_FMT_MJPEG
Googling reveals that “V4L2_PIX_FMT_YUYV is known in the Windows environment as YUY2”. So this seems to be what you need for uncompressed video.