[PATCH 1/2] tools/amd_hdmi_compliance: Add FRL Test Support
Fangzhi Zuo <[email protected]>
| Newsgroups | org.freedesktop.lists.igt-dev |
|---|---|
| Message-ID | <[email protected]> |
From: Fangzhi Zuo <[email protected]> 1. Add 2.1 mode list. 2. Extend support of pixel format to RGB/444/422/420 and color depth to 6/8/10/12/16 bpc. Signed-off-by: Fangzhi Zuo <[email protected]> Tested-by: Mark Broadworth <[email protected]> --- tools/amd_hdmi_compliance.c | 438 ++++++++++++++++++++++++++++++++++-- 1 file changed, 423 insertions(+), 15 deletions(-) diff --git a/tools/amd_hdmi_compliance.c b/tools/amd_hdmi_compliance.c index e0ef78d81..a60176c0e 100644 --- a/tools/amd_hdmi_compliance.c +++ b/tools/amd_hdmi_compliance.c @@ -38,6 +38,14 @@ typedef struct data { int timeout_seconds; } data_t; +enum dc_pixel_encoding { + PIXEL_ENCODING_UNKNOWN = 0, + PIXEL_ENCODING_RGB, + PIXEL_ENCODING_YCBCR444, + PIXEL_ENCODING_YCBCR422, + PIXEL_ENCODING_YCBCR420, +}; + /* Video modes indexed by VIC */ static drmModeModeInfo test_modes[] = { [0] = { 25175, @@ -100,6 +108,102 @@ static drmModeModeInfo test_modes[] = { 50, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, 0x40, "1920x1080", /* VIC 31 */ }, + [32] = { 74250, + 1920, 2558, 2602, 2750, 0, + 1080, 1084, 1089, 1125, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1920x1080", /* VIC 32 */ + }, + [33] = { 74250, + 1920, 2448, 2492, 2640, 0, + 1080, 1084, 1089, 1125, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1920x1080", /* VIC 33 */ + }, + [34] = { 74250, + 1920, 2008, 2052, 2200, 0, + 1080, 1084, 1089, 1125, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1920x1080", /* VIC 34 */ + }, + [41] = { 148500, + 1280, 1720, 1760, 1980, 0, + 720, 725, 730, 750, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 41 */ + }, + [42] = { 54000, + 720, 732, 796, 864, 0, + 576, 581, 586, 625, 0, + 100, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_4_3, + 0x40, "720x576", /* VIC 42 */ + }, + [43] = { 54000, + 720, 732, 796, 864, 0, + 576, 581, 586, 625, 0, + 100, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "720x576", /* VIC 43 */ + }, + [47] = { 148500, + 1280, 1390, 1430, 1650, 0, + 720, 725, 730, 750, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 47 */ + }, + [48] = { 54000, + 720, 736, 798, 858, 0, + 480, 489, 495, 525, 0, + 120, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_4_3, + 0x40, "720x480", /* VIC 48 */ + }, + [49] = { 54000, + 720, 736, 798, 858, 0, + 480, 489, 495, 525, 0, + 120, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "720x480", /* VIC 49 */ + }, + [52] = { 108000, + 720, 732, 796, 864, 0, + 576, 581, 586, 625, 0, + 200, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_4_3, + 0x40, "720x576", /* VIC 52 */ + }, + [53] = { 108000, + 720, 732, 796, 864, 0, + 576, 581, 586, 625, 0, + 200, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "720x576", /* VIC 53 */ + }, + [56] = { 108000, + 720, 736, 798, 858, 0, + 480, 489, 495, 525, 0, + 240, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_4_3, + 0x40, "720x480", /* VIC 56 */ + }, + [57] = { 108000, + 720, 736, 798, 858, 0, + 480, 489, 495, 525, 0, + 240, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "720x480", /* VIC 57 */ + }, + [60] = { 59400, + 1280, 3040, 3080, 3300, 0, + 720, 725, 730, 750, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 60 */ + }, + [61] = { 74250, + 1280, 3700, 3740, 3960, 0, + 720, 725, 730, 750, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 61 */ + }, + [62] = { 74250, + 1280, 3040, 3080, 3300, 0, + 720, 725, 730, 750, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 62 */ + }, [63] = { 297000, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, @@ -284,7 +388,7 @@ static drmModeModeInfo test_modes[] = { 3840, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, - 0x40, "4096x2160", /* VIC 93 */ + 0x40, "3840x2160", /* VIC 93 */ }, [94] = { 297000, 3840, 4896, 4984, 5280, 0, @@ -344,7 +448,7 @@ static drmModeModeInfo test_modes[] = { 3840, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, - 0x40, "4096x2160", /* VIC 103 */ + 0x40, "3840x2160", /* VIC 103 */ }, [104] = { 297000, 3840, 4896, 4984, 5280, 0, @@ -370,6 +474,288 @@ static drmModeModeInfo test_modes[] = { 60, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, 0x40, "3840x2160", /* VIC 107 */ }, + [108] = { 90000, + 1280, 2240, 2280, 2500, 0, + 720, 725, 730, 750, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1280x720", /* VIC 108 */ + }, + [109] = { 90000, + 1280, 2240, 2280, 2500, 0, + 720, 725, 730, 750, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "1280x720", /* VIC 109 */ + }, + [110] = { 99000, + 1680, 2490, 2530, 2750, 0, + 720, 725, 730, 750, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "1680x720", /* VIC 110 */ + }, + [111] = { 148500, + 1920, 2558, 2602, 2750, 0, + 1080, 1084, 1089, 1125, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "1920x1080", /* VIC 111 */ + }, + [112] = { 148500, + 1920, 2558, 2602, 2750, 0, + 1080, 1084, 1089, 1125, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "1920x1080", /* VIC 112 */ + }, + [113] = { 198000, + 2560, 3558, 3602, 3750, 0, + 1080, 1084, 1089, 1100, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "2560x1080", /* VIC 113 */ + }, + [114] = { 594000, + 3840, 5116, 5204, 5500, 0, + 2160, 2168, 2178, 2250, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "3840x2160", /* VIC 114 */ + }, + [115] = { 594000, + 4096, 5116, 5204, 5500, 0, + 2160, 2168, 2178, 2250, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_256_135, + 0x40, "4096x2160", /* VIC 115 */ + }, + [116] = { 594000, + 3840, 5116, 5204, 5500, 0, + 2160, 2168, 2178, 2250, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "3840x2160", /* VIC 116 */ + }, + [117] = { 1188000, + 3840, 4896, 4984, 5280, 0, + 2160, 2168, 2178, 2250, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "3840x2160", /* VIC 117 */ + }, + [118] = { 1188000, + 3840, 4016, 4104, 4400, 0, + 2160, 2168, 2178, 2250, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "3840x2160", /* VIC 118 */ + }, + [119] = { 1188000, + 3840, 4896, 4984, 5280, 0, + 2160, 2168, 2178, 2250, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "3840x2160", /* VIC 119 */ + }, + [120] = { 1188000, + 3840, 4016, 4104, 4400, 0, + 2160, 2168, 2178, 2250, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "3840x2160", /* VIC 120 */ + }, + [121] = { 396000, + 5120, 7116, 7204, 7500, 0, + 2160, 2168, 2178, 2200, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 121 */ + }, + [122] = { 396000, + 5120, 6816, 6904, 7200, 0, + 2160, 2168, 2178, 2200, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 122 */ + }, + [123] = { 396000, + 5120, 5784, 5872, 6000, 0, + 2160, 2168, 2178, 2200, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 123 */ + }, + [124] = { 742500, + 5120, 5866, 5954, 6250, 0, + 2160, 2168, 2178, 2475, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 124 */ + }, + [125] = { 742500, + 5120, 6216, 6304, 6600, 0, + 2160, 2168, 2178, 2250, 0, + 50, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 125 */ + }, + [126] = { 742500, + 5120, 5284, 5372, 5500, 0, + 2160, 2168, 2178, 2250, 0, + 60, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 126 */ + }, + [127] = { 1485000, + 5120, 6216, 6304, 6600, 0, + 2160, 2168, 2178, 2250, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 127 */ + }, + [193] = { 1485000, + 5120, 5284, 5372, 5500, 0, + 2160, 2168, 2178, 2250, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "5120x2160", /* VIC 193 */ + }, + [194] = { 1188000, + 7680, 10232, 10408, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 194 */ + }, + [195] = { 1188000, + 7680, 10032, 10208, 10800, 0, + 4320, 4336, 4356, 4400, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 195 */ + }, + [196] = { 1188000, + 7680, 8232, 8408, 9000, 0, + 4320, 4336, 4356, 4400, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 196 */ + }, + [197] = { 2376000, + 7680, 10232, 10408, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 197 */ + }, + [198] = { 2376000, + 7680, 10032, 10208, 10800, 0, + 4320, 4336, 4356, 4400, 0, + 50, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 198 */ + }, + [199] = { 2376000, + 7680, 8232, 8408, 9000, 0, + 4320, 4336, 4356, 4400, 0, + 60, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 199 */ + }, + [200] = { 4752000, + 7680, 9792, 9968, 10560, 0, + 4320, 4336, 4356, 4500, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 200 */ + }, + [201] = { 4752000, + 7680, 8032, 8208, 8800, 0, + 4320, 4336, 4356, 4500, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_16_9, + 0x40, "7680x4320", /* VIC 201 */ + }, + [202] = { 1188000, + 7680, 10232, 10408, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 202 */ + }, + [203] = { 1188000, + 7680, 10032, 10208, 10800, 0, + 4320, 4336, 4356, 4400, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 203 */ + }, + [204] = { 1188000, + 7680, 8232, 8408, 9000, 0, + 4320, 4336, 4356, 4400, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 204 */ + }, + [205] = { 2376000, + 7680, 10232, 10408, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 205 */ + }, + [206] = { 2376000, + 7680, 10032, 10208, 10800, 0, + 4320, 4336, 4356, 4400, 0, + 50, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 206 */ + }, + [207] = { 2376000, + 7680, 8232, 8408, 9000, 0, + 4320, 4336, 4356, 4400, 0, + 60, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 207 */ + }, + [208] = { 4752000, + 7680, 9792, 9968, 10560, 0, + 4320, 4336, 4356, 4500, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 208 */ + }, + [209] = { 4752000, + 7680, 8032, 8208, 8800, 0, + 4320, 4336, 4356, 4500, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "7680x4320", /* VIC 209 */ + }, + [210] = { 1485000, + 10240, 11732, 11908, 12500, 0, + 4320, 4336, 4356, 4950, 0, + 24, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 210 */ + }, + [211] = { 1485000, + 10240, 12732, 12908, 13500, 0, + 4320, 4336, 4356, 4400, 0, + 25, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 211 */ + }, + [212] = { 1485000, + 10240, 10528, 10704, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 30, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 212 */ + }, + [213] = { 2970000, + 10240, 11732, 11908, 12500, 0, + 4320, 4336, 4356, 4950, 0, + 48, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 213 */ + }, + [214] = { 2970000, + 10240, 12732, 12908, 13500, 0, + 4320, 4336, 4356, 4400, 0, + 50, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 214 */ + }, + [215] = { 2970000, + 10240, 10528, 10704, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 60, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 215 */ + }, + [216] = { 5940000, + 10240, 12432, 12608, 13200, 0, + 4320, 4336, 4356, 4500, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 216 */ + }, + [217] = { 5940000, + 10240, 10528, 10704, 11000, 0, + 4320, 4336, 4356, 4500, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_64_27, + 0x40, "10240x4320", /* VIC 217 */ + }, + [218] = { 1188000, + 4096, 4896, 4984, 5280, 0, + 2160, 2168, 2178, 2250, 0, + 100, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_256_135, + 0x40, "4096x2160", /* VIC 218 */ + }, + [219] = { 1188000, + 4096, 4184, 4272, 4400, 0, + 2160, 2168, 2178, 2250, 0, + 120, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PIC_AR_256_135, + 0x40, "4096x2160", /* VIC 219 */ + }, }; static void signal_handler(int signo) @@ -440,22 +826,42 @@ static void wait_for_keypress(void) } while (c != '\n' && c != EOF); } -/* Write 0 or 1 to debugfs entry "force_yuv420_output" of connector */ -static void set_force_yuv420(data_t *data, int force, int conn_id) +static void force_pixel_format(data_t *data, int pixel_format, int conn_id) { int fd, res; + const char *entry_name; test_init(data, conn_id); - igt_info("Setting force_yuv420_output to %d on connector id %d\n", - force ? 1 : 0, data->output->config.connector->connector_id); - fd = igt_debugfs_connector_dir(data->fd, data->output->name, O_RDONLY); igt_assert(fd >= 0); - res = igt_sysfs_write(fd, "force_yuv420_output", force ? "1" : "0", 2); + igt_info("Setting %d on connector id %d\n", + pixel_format, data->output->config.connector->connector_id); + + switch (pixel_format) { + case 1: + entry_name = "force_rgb_output"; + break; + case 2: + entry_name = "force_yuv422_output"; + break; + case 3: + entry_name = "force_yuv444_output"; + break; + case 4: + entry_name = "force_yuv420_output"; + break; + default: + goto out; + } + + igt_info("%s\n", entry_name); + res = igt_sysfs_write(fd, entry_name, "1", 2); + igt_info("res = %d\n", res); igt_require(res > 0); +out: close(fd); test_fini(data); } @@ -470,11 +876,12 @@ static void set_max_bpc(data_t *data, int max_bpc, int conn_id) igt_info("Setting max bpc to %d on connector id %d\n", max_bpc, data->output->config.connector->connector_id); - igt_create_fb(data->fd, 128, 128, DRM_FORMAT_XRGB8888, 0, &afb); + igt_create_pattern_fb(data->fd, 1024, 1024, DRM_FORMAT_XRGB8888, 0, &afb); igt_plane_set_fb(data->primary, &afb); igt_output_set_prop_value(data->output, IGT_CONNECTOR_MAX_BPC, max_bpc); igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + igt_remove_fb(data->fd, &afb); test_fini(data); } @@ -510,8 +917,8 @@ static void usage(const char *name) igt_info("-t vic Select video mode based on VIC\n"); igt_info("-v Test on 'Virtual' connector as well, for debugging.\n"); igt_info("-i conn_id Use connector by ID\n"); - igt_info("-b max_bpc Set \"max bpc\" connector property\n"); - igt_info("-y 0|1 Write 0 or 1 to connector's debugfs force_yuv420_output\n"); + igt_info("-b 6|8|10|12|16 Set 6|8|10|12|16 bpc\n"); + igt_info("-y 1|2|3|4 Set RGB|YUV422|YUV444|YUV420\n"); igt_info("-e seconds number of seconds to display test pattern and exit\n"); igt_info("NOTE: if -i is not specified, first connected HDMI connector will be used for -t, -b and -y\n"); } @@ -523,7 +930,7 @@ int main(int argc, char **argv) int vic = 0; int conn_id = 0; int max_bpc = 0; - int force_yuv_420 = -1; + int pixel_format = PIXEL_ENCODING_UNKNOWN; memset(&data, 0, sizeof(data)); @@ -542,7 +949,7 @@ int main(int argc, char **argv) max_bpc = atoi(optarg); break; case 'y': - force_yuv_420 = atoi(optarg); + pixel_format = atoi(optarg); break; case 'e': data.timeout_seconds = atoi(optarg); @@ -561,8 +968,9 @@ int main(int argc, char **argv) igt_require(data.display.is_atomic); igt_display_require_output(&data.display); - if (force_yuv_420 >= 0) - set_force_yuv420(&data, force_yuv_420, conn_id); + if (pixel_format >= PIXEL_ENCODING_RGB && + pixel_format <= PIXEL_ENCODING_YCBCR420) + force_pixel_format(&data, pixel_format, conn_id); if (max_bpc) set_max_bpc(&data, max_bpc, conn_id); -- 2.53.0