On Fri, 15 Apr 2011 15:13:02 -0400 Adam Jackson ajax@redhat.com wrote:
On 4/15/11 2:40 PM, Jesse Barnes wrote:
@@ -1461,6 +1462,15 @@ static void drm_add_display_info(struct edid *edid, info->bpp = 0; break; }
- if (edid->features & DRM_EDID_FEATURE_RGB)
info->color_formats = DRM_COLOR_FORMAT_RGB444;
- else if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444)
info->color_formats = DRM_COLOR_FORMAT_RGB444 |
DRM_COLOR_FORMAT_YCRCB444;
- else if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB)
info->color_formats = DRM_COLOR_FORMAT_RGB444 |
DRM_COLOR_FORMAT_YCRCB444 | DRM_COLOR_FORMAT_YCRCB422;
Overcomplicated (RGB is numerically 0, YCRCB is just two other values or'd together) and wrong (doesn't handle YCbCr 4:2:2 alone). You want:
Arg, of course I have to mask out the value first, I'll fix that (my current test display conveniently sets RGB_YCRCB so I missed this in testing).
info->color_formats = DRM_COLOR_FORMAT_RGB444; if (edid->features & DRM_EDID_FEATURE_YCRCB444) info->color_formats |= DRM_COLOR_FORMAT_YCBCR444; if (edid->features & DRM_EDID_FEATURE_YCRCB422) info->color_formats |= DRM_COLOR_FORMAT_YCBCR422;
... which is corrected to not include RGB uselessly in the DRM_EDID_FEATURE_* tokens. I should have noticed that in your first patch, whoops.
I don't think EDID supports that? The docs I have here imply that either RGB, RGB + YCrCb444 or RGB + YCrCb444 + YCrCb422 are the only things we can report.
Or is there a CEA block extension that allows for more granularity?