Hi, I use my pixel plugged in as a thin client for programming. On both stock and GrapheneOS the phone never shows ultrawide resolutions (21:9 or 32:9) with the two ultrawide monitors that I have. I was curious as to why that might be the case, so I went digging into the kernel code and found the following whitelist in the code :
static struct dptx_allowed_mode dptx_allowed_modes[] = {
{3840, 2160, 594000}, /* CEA-861 */
{3840, 2160, 533250}, /* CVT-RB */
{3840, 1600, 395000}, /* CVT-RB */
{3440, 1440, 319750}, /* CVT-RB */
{2560, 1600, 348500}, /* DMT 0x4D */
{2560, 1440, 241500}, /* CVT-RB */
{2560, 1080, 198000}, /* CEA-861 */
{1920, 1200, 193250}, /* DMT 0x45 */
{1920, 1080, 148500}, /* DMT 0x52 | CEA-861 */
{1600, 900, 108000}, /* DMT 0x53 */
{1280, 720, 74250}, /* DMT 0x55 | CEA-861 */
{1024, 768, 65000}, /* DMT 0x10 */
{ 800, 600, 40000}, /* DMT 0x9 */
{ 640, 480, 25175}, /* DMT 0x4 */
};
I decided to build a kernel and ROM with this allowlist simply removed, relying only on the other checks in the file. I succeeded in building but while the new (correct) resolutions showed up on the phone, driving the display no longer worked at all (black output) even with stock-working resolutions. I also confirmed that my build procedure is correct by building the ROM without my patch and flashing to confirm that it did in fact behave just like stock and the GrapheneOS release for my phone. Indeed, without my patch my build only shows the resolutions in the above allowlist and drives the display fine.
I was wondering if anyone would have any idea as to why removing this check breaks display for previously functioning resolutions too, and maybe ideas on what patch would actually work.
TYIA