Hi,
For letting DRM clients to select output encoding:
Sink can support certain display timings with high output bit-depths using multiple output encodings, e.g. sink can support a particular timing with RGB 10-bit, YCbCr422 10-bit and YCbCr420 10-bit. So DRM client may want to select YCbCr422 10-bit over RBG 10-bit output to reduce the link bandwidth (and in turn reduce power/voltage). If DRM driver automatically selects output encoding then we are restricting DRM clients from making appropriate choice.
For selectable output color range:
Certain applications (typically graphics) usually rendered in full range while some applications (typically video) have limited range content. Since content can change dynamically, DRM driver does not have enough information to choose correct quantization. Only DRM client can correctly select which quantization to set (to preserve artist's intent).
For how to use selectable output encoding with Weston:
I was thinking that DRM should have separate property to list the encodings supported by sink and Weston will present this list to its client. Your idea to validate encodings using TEST_ONLY commit and present a list of timings along with encodings supported by particular timing seems better. Instead of validating all possible encodings, does it make sense to validate only those supported by sink? Irrespective of this we would anyway need some mechanism which will allow user to select particular encoding for a particular mode. I was thinking to allow this using new DRM property "Encoding". Do you have anything better in mind?
(Since I am using my Gmail Id, I feel I should mention that I work at Nvidia)
Thanks,
-Yogish