Over the years of using HDMI monitors, I always had some trouble with the RGB color range, full (0-255) vs limited (16-235).
The HDMI Spec v1.3a says, in section 6.6 (page 95, PDF page 111):
Black and white levels for video components shall be either “Full Range” or “Limited Range.” YCBCR components shall always be Limited Range while RGB components may be either Full Range or Limited Range. While using RGB, Limited Range shall be used for all video formats defined in CEA-861-D, with the exception of VGA (640x480) format, which requires Full Range.
This basically says, "for all TV formats (except for VGA), use limited-range RGB. Other formats are used by computer monitors which we don't care about." In practice this obviously won't work and didn't work because there are too many 1080p computer monitors that expect full-range RGB. And it gets worse in the 4K era.
Eventually I reached the conclusion that I'll never buy another HDMI monitor, but laptop vendors just won't switch to DisplayPort...
That said, at the same time, I was repeatedly surprised by how well those HDMI-DVI adapters (cables) works. The HDMI source (and GPU drivers) seems to be detecting those adapters and notice the sink is actually a monitor and not a TV, and then switch to full-range RGB instead.
How is this implemented in practice (e.g. by AMD and Intel GPU hardware and drivers)?
Related:
How to make a HDMI signal be identified as HDMI instead of DVI?