This certainly is the most KISS approach. This proposal in essence is just an arbitrary command multiplexer / demultiplexer and ioctls already are exactly that. With the added advantage of being able to directly use pass the vendor-cmd-specific struct to the ioctl instead of having to first embed it in some other struct.
There's also the question of how much complexity needs to remain in the kernel, if vendor-specific ioctls are made available.
Does every vendor driver implement a complex mapping to hardware registers? What about drivers that basically implement no mapping at all and simply forward all data to the hardware without any checking? The latter case would match Pavel's concerns, although I don't see how this is any different from the situation today, where userspace talks directly to the hardware via libusb etc.
To be honest, I think the kernel shouldn't include too much high-level complexity. If there is a desire to implement a generic display device on top of the RGB device, this should be a configurable service running in user space. The kernel should provide an interface to expose this emulated display as a "real" display to applications - unless this can also be done entirely in user space in a generic way.