Lines Matching full:output
172 if (xf86_config->output[o]->crtc == crtc) in xf86CrtcInUse()
191 * Return whether the output is leased by a client
195 xf86OutputIsLeased(xf86OutputPtr output) in xf86OutputIsLeased() argument
198 if (!output->randr_output) in xf86OutputIsLeased()
200 return RROutputIsLeased(output->randr_output); in xf86OutputIsLeased()
216 xf86OutputPtr output = xf86_config->output[o]; in xf86CrtcSetScreenSubpixelOrder() local
218 if (output->crtc == crtc) { in xf86CrtcSetScreenSubpixelOrder()
219 switch (output->subpixel_order) { in xf86CrtcSetScreenSubpixelOrder()
226 subpixel_order = output->subpixel_order; in xf86CrtcSetScreenSubpixelOrder()
325 * adjust it according to limitations or output properties, and also in xf86CrtcSetModeTransform()
329 xf86OutputPtr output = xf86_config->output[i]; in xf86CrtcSetModeTransform() local
331 if (output->crtc != crtc) in xf86CrtcSetModeTransform()
334 if (!output->funcs->mode_fixup(output, mode, adjusted_mode)) { in xf86CrtcSetModeTransform()
348 xf86OutputPtr output = xf86_config->output[i]; in xf86CrtcSetModeTransform() local
350 if (output->crtc != crtc) in xf86CrtcSetModeTransform()
353 /* Disable the output as the first thing we do. */ in xf86CrtcSetModeTransform()
354 output->funcs->prepare(output); in xf86CrtcSetModeTransform()
359 /* Set up the DPLL and any output state that needs to adjust or depend in xf86CrtcSetModeTransform()
364 xf86OutputPtr output = xf86_config->output[i]; in xf86CrtcSetModeTransform() local
366 if (output->crtc == crtc) in xf86CrtcSetModeTransform()
367 output->funcs->mode_set(output, mode, adjusted_mode); in xf86CrtcSetModeTransform()
378 xf86OutputPtr output = xf86_config->output[i]; in xf86CrtcSetModeTransform() local
380 if (output->crtc == crtc) in xf86CrtcSetModeTransform()
381 output->funcs->commit(output); in xf86CrtcSetModeTransform()
456 * Output functions
512 xf86OutputSetMonitor(xf86OutputPtr output) in xf86OutputSetMonitor() argument
517 if (!output->name) in xf86OutputSetMonitor()
520 free(output->options); in xf86OutputSetMonitor()
522 output->options = xnfalloc(sizeof(xf86OutputOptions)); in xf86OutputSetMonitor()
523 memcpy(output->options, xf86OutputOptions, sizeof(xf86OutputOptions)); in xf86OutputSetMonitor()
525 XNFasprintf(&option_name, "monitor-%s", output->name); in xf86OutputSetMonitor()
526 monitor = xf86findOptionValue(output->scrn->options, option_name); in xf86OutputSetMonitor()
528 monitor = output->name; in xf86OutputSetMonitor()
530 xf86MarkOptionUsedByName(output->scrn->options, option_name); in xf86OutputSetMonitor()
532 output->conf_monitor = xf86findMonitor(monitor, in xf86OutputSetMonitor()
537 if (!output->conf_monitor && output->use_screen_monitor) in xf86OutputSetMonitor()
538 output->conf_monitor = xf86findMonitor(output->scrn->monitor->id, in xf86OutputSetMonitor()
540 if (output->conf_monitor) { in xf86OutputSetMonitor()
541 xf86DrvMsg(output->scrn->scrnIndex, X_INFO, in xf86OutputSetMonitor()
542 "Output %s using monitor section %s\n", in xf86OutputSetMonitor()
543 output->name, output->conf_monitor->mon_identifier); in xf86OutputSetMonitor()
544 xf86ProcessOptions(output->scrn->scrnIndex, in xf86OutputSetMonitor()
545 output->conf_monitor->mon_option_lst, in xf86OutputSetMonitor()
546 output->options); in xf86OutputSetMonitor()
549 xf86DrvMsg(output->scrn->scrnIndex, X_INFO, in xf86OutputSetMonitor()
550 "Output %s has no monitor section\n", output->name); in xf86OutputSetMonitor()
554 xf86OutputEnabled(xf86OutputPtr output, Bool strict) in xf86OutputEnabled() argument
558 /* check to see if this output was enabled in the config file */ in xf86OutputEnabled()
559 if (xf86GetOptValBool(output->options, OPTION_ENABLE, &enable) && enable) { in xf86OutputEnabled()
560 xf86DrvMsg(output->scrn->scrnIndex, X_INFO, in xf86OutputEnabled()
561 "Output %s enabled by config file\n", output->name); in xf86OutputEnabled()
564 /* or if this output was disabled in the config file */ in xf86OutputEnabled()
565 if (xf86GetOptValBool(output->options, OPTION_DISABLE, &disable) && disable) { in xf86OutputEnabled()
566 xf86DrvMsg(output->scrn->scrnIndex, X_INFO, in xf86OutputEnabled()
567 "Output %s disabled by config file\n", output->name); in xf86OutputEnabled()
573 enable = output->status == XF86OutputStatusConnected && !output->non_desktop; in xf86OutputEnabled()
577 enable = output->status != XF86OutputStatusDisconnected; in xf86OutputEnabled()
580 xf86DrvMsg(output->scrn->scrnIndex, X_INFO, in xf86OutputEnabled()
581 "Output %s %sconnected\n", output->name, enable ? "" : "dis"); in xf86OutputEnabled()
586 xf86OutputIgnored(xf86OutputPtr output) in xf86OutputIgnored() argument
588 return xf86ReturnOptValBool(output->options, OPTION_IGNORE, FALSE); in xf86OutputIgnored()
599 xf86OutputInitialRotation(xf86OutputPtr output) in xf86OutputInitialRotation() argument
601 const char *rotate_name = xf86GetOptValString(output->options, in xf86OutputInitialRotation()
606 if (output->initial_rotation) in xf86OutputInitialRotation()
607 return output->initial_rotation; in xf86OutputInitialRotation()
621 xf86OutputPtr output, *outputs; in xf86OutputCreate() local
631 output = calloc(sizeof(xf86OutputRec) + len, 1); in xf86OutputCreate()
632 if (!output) in xf86OutputCreate()
634 output->scrn = scrn; in xf86OutputCreate()
635 output->funcs = funcs; in xf86OutputCreate()
637 output->name = (char *) (output + 1); in xf86OutputCreate()
638 strcpy(output->name, name); in xf86OutputCreate()
640 output->subpixel_order = SubPixelUnknown; in xf86OutputCreate()
642 * Use the old per-screen monitor section for the first output in xf86OutputCreate()
644 output->use_screen_monitor = (xf86_config->num_output == 0); in xf86OutputCreate()
646 output->randr_output = NULL; in xf86OutputCreate()
649 xf86OutputSetMonitor(output); in xf86OutputCreate()
650 if (xf86OutputIgnored(output)) { in xf86OutputCreate()
651 free(output); in xf86OutputCreate()
656 if (xf86_config->output) in xf86OutputCreate()
657 outputs = reallocarray(xf86_config->output, in xf86OutputCreate()
664 free(output); in xf86OutputCreate()
668 xf86_config->output = outputs; in xf86OutputCreate()
670 if (xf86GetOptValBool(output->options, OPTION_PRIMARY, &primary) && primary) { in xf86OutputCreate()
671 memmove(xf86_config->output + 1, xf86_config->output, in xf86OutputCreate()
673 xf86_config->output[0] = output; in xf86OutputCreate()
676 xf86_config->output[xf86_config->num_output] = output; in xf86OutputCreate()
681 return output; in xf86OutputCreate()
685 xf86OutputRename(xf86OutputPtr output, const char *name) in xf86OutputRename() argument
692 if (output->name && output->name != (char *) (output + 1)) in xf86OutputRename()
693 free(output->name); in xf86OutputRename()
694 output->name = newname; in xf86OutputRename()
695 xf86OutputSetMonitor(output); in xf86OutputRename()
696 if (xf86OutputIgnored(output)) in xf86OutputRename()
702 xf86OutputUseScreenMonitor(xf86OutputPtr output, Bool use_screen_monitor) in xf86OutputUseScreenMonitor() argument
704 if (use_screen_monitor != output->use_screen_monitor) { in xf86OutputUseScreenMonitor()
705 output->use_screen_monitor = use_screen_monitor; in xf86OutputUseScreenMonitor()
706 xf86OutputSetMonitor(output); in xf86OutputUseScreenMonitor()
711 xf86OutputDestroy(xf86OutputPtr output) in xf86OutputDestroy() argument
713 ScrnInfoPtr scrn = output->scrn; in xf86OutputDestroy()
717 (*output->funcs->destroy) (output); in xf86OutputDestroy()
718 while (output->probed_modes) in xf86OutputDestroy()
719 xf86DeleteMode(&output->probed_modes, output->probed_modes); in xf86OutputDestroy()
721 if (xf86_config->output[o] == output) { in xf86OutputDestroy()
722 memmove(&xf86_config->output[o], in xf86OutputDestroy()
723 &xf86_config->output[o + 1], in xf86OutputDestroy()
728 if (output->name && output->name != (char *) (output + 1)) in xf86OutputDestroy()
729 free(output->name); in xf86OutputDestroy()
730 free(output); in xf86OutputDestroy()
769 xf86OutputPtr output = config->output[o]; in xf86CrtcCloseScreen() local
771 output->randr_output = NULL; in xf86CrtcCloseScreen()
851 xf86DefaultMode(xf86OutputPtr output, int width, int height) in xf86DefaultMode() argument
859 mm_height = output->mm_height; in xf86DefaultMode()
865 for (mode = output->probed_modes; mode; mode = mode->next) { in xf86DefaultMode()
871 if (xf86ModeWidth(mode, output->initial_rotation) > width || in xf86DefaultMode()
872 xf86ModeHeight(mode, output->initial_rotation) > height) in xf86DefaultMode()
890 xf86ClosestMode(xf86OutputPtr output, in xf86ClosestMode() argument
901 for (mode = output->probed_modes; mode; mode = mode->next) { in xf86ClosestMode()
905 if (xf86ModeWidth(mode, output->initial_rotation) > width || in xf86ClosestMode()
906 xf86ModeHeight(mode, output->initial_rotation) > height) in xf86ClosestMode()
910 if (output->initial_rotation == match_rotation && in xf86ClosestMode()
915 output-> in xf86ClosestMode()
918 output-> in xf86ClosestMode()
930 xf86OutputHasPreferredMode(xf86OutputPtr output, int width, int height) in xf86OutputHasPreferredMode() argument
934 for (mode = output->probed_modes; mode; mode = mode->next) { in xf86OutputHasPreferredMode()
935 if (xf86ModeWidth(mode, output->initial_rotation) > width || in xf86OutputHasPreferredMode()
936 xf86ModeHeight(mode, output->initial_rotation) > height) in xf86OutputHasPreferredMode()
946 xf86OutputHasUserPreferredMode(xf86OutputPtr output) in xf86OutputHasUserPreferredMode() argument
948 DisplayModePtr mode, first = output->probed_modes; in xf86OutputHasUserPreferredMode()
964 xf86OutputPtr output; in xf86PickCrtcs() local
973 output = config->output[n]; in xf86PickCrtcs()
976 * Compute score with this output disabled in xf86PickCrtcs()
989 if (output->status == XF86OutputStatusConnected) in xf86PickCrtcs()
992 if (xf86OutputHasPreferredMode(output, width, height)) in xf86PickCrtcs()
995 * Select a crtc for this output and in xf86PickCrtcs()
1000 if ((output->possible_crtcs & (1 << c)) == 0) in xf86PickCrtcs()
1005 * Check to see if some other output is in xf86PickCrtcs()
1017 config->output[o]->initial_rotation == in xf86PickCrtcs()
1018 config->output[n]->initial_rotation && in xf86PickCrtcs()
1019 config->output[o]->initial_x == config->output[n]->initial_x && in xf86PickCrtcs()
1020 config->output[o]->initial_y == config->output[n]->initial_y) { in xf86PickCrtcs()
1021 if ((output->possible_clones & (1 << o)) == 0) in xf86PickCrtcs()
1073 xf86OutputPtr output = config->output[o]; in xf86DefaultScreenLimits() local
1076 if (output->possible_crtcs & (1 << s)) { in xf86DefaultScreenLimits()
1079 for (mode = output->probed_modes; mode; in xf86DefaultScreenLimits()
1124 xf86OutputPtr output = config->output[o]; in xf86UserConfiguredOutputs() local
1134 position = xf86GetOptValString(output->options, OPTION_POSITION); in xf86UserConfiguredOutputs()
1142 relative_name = xf86GetOptValString(output->options, relation); in xf86UserConfiguredOutputs()
1149 modes[o] = xf86OutputHasUserPreferredMode(output); in xf86UserConfiguredOutputs()
1167 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1169 if (output->initial_x || output->initial_y) in xf86InitialOutputPositions()
1174 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1176 output->initial_x = output->initial_y = POSITION_UNSET; in xf86InitialOutputPositions()
1190 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1197 if (output->initial_x != POSITION_UNSET) in xf86InitialOutputPositions()
1199 position = xf86GetOptValString(output->options, OPTION_POSITION); in xf86InitialOutputPositions()
1207 output->initial_x = x; in xf86InitialOutputPositions()
1208 output->initial_y = y; in xf86InitialOutputPositions()
1212 "Output %s position not of form \"x y\"\n", in xf86InitialOutputPositions()
1213 output->name); in xf86InitialOutputPositions()
1214 output->initial_x = output->initial_y = 0; in xf86InitialOutputPositions()
1226 relative_name = xf86GetOptValString(output->options, relation); in xf86InitialOutputPositions()
1235 xf86OutputPtr out_rel = config->output[or]; in xf86InitialOutputPositions()
1241 relative = config->output[or]; in xf86InitialOutputPositions()
1246 relative = config->output[or]; in xf86InitialOutputPositions()
1252 "Cannot position output %s relative to unknown output %s\n", in xf86InitialOutputPositions()
1253 output->name, relative_name); in xf86InitialOutputPositions()
1254 output->initial_x = 0; in xf86InitialOutputPositions()
1255 output->initial_y = 0; in xf86InitialOutputPositions()
1261 "Cannot position output %s relative to output %s without modes\n", in xf86InitialOutputPositions()
1262 output->name, relative_name); in xf86InitialOutputPositions()
1263 output->initial_x = 0; in xf86InitialOutputPositions()
1264 output->initial_y = 0; in xf86InitialOutputPositions()
1272 output->initial_x = relative->initial_x; in xf86InitialOutputPositions()
1273 output->initial_y = relative->initial_y; in xf86InitialOutputPositions()
1276 output->initial_y += in xf86InitialOutputPositions()
1280 output->initial_x += in xf86InitialOutputPositions()
1285 output->initial_y -= in xf86InitialOutputPositions()
1286 xf86ModeHeight(modes[o], output->initial_rotation); in xf86InitialOutputPositions()
1290 output->initial_x -= in xf86InitialOutputPositions()
1291 xf86ModeWidth(modes[o], output->initial_rotation); in xf86InitialOutputPositions()
1301 output->initial_x = 0; in xf86InitialOutputPositions()
1302 output->initial_y = 0; in xf86InitialOutputPositions()
1309 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1311 if (output->initial_x == POSITION_UNSET) { in xf86InitialOutputPositions()
1313 "Output position loop. Moving %s to 0,0\n", in xf86InitialOutputPositions()
1314 output->name); in xf86InitialOutputPositions()
1315 output->initial_x = output->initial_y = 0; in xf86InitialOutputPositions()
1328 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1330 if (output->initial_x < min_x) in xf86InitialOutputPositions()
1331 min_x = output->initial_x; in xf86InitialOutputPositions()
1332 if (output->initial_y < min_y) in xf86InitialOutputPositions()
1333 min_y = output->initial_y; in xf86InitialOutputPositions()
1337 xf86OutputPtr output = config->output[o]; in xf86InitialOutputPositions() local
1339 output->initial_x -= min_x; in xf86InitialOutputPositions()
1340 output->initial_y -= min_y; in xf86InitialOutputPositions()
1352 xf86OutputPtr output = config->output[o]; in xf86InitialPanning() local
1353 const char *panning = xf86GetOptValString(output->options, OPTION_PANNING); in xf86InitialPanning()
1358 memset(&output->initialTotalArea, 0, sizeof(BoxRec)); in xf86InitialPanning()
1359 memset(&output->initialTrackingArea, 0, sizeof(BoxRec)); in xf86InitialPanning()
1360 memset(output->initialBorder, 0, 4 * sizeof(INT16)); in xf86InitialPanning()
1370 output->initialBorder[0] = brdr[0]; in xf86InitialPanning()
1371 output->initialBorder[1] = brdr[1]; in xf86InitialPanning()
1372 output->initialBorder[2] = brdr[2]; in xf86InitialPanning()
1373 output->initialBorder[3] = brdr[3]; in xf86InitialPanning()
1376 output->initialTrackingArea.x1 = track_left; in xf86InitialPanning()
1377 output->initialTrackingArea.y1 = track_top; in xf86InitialPanning()
1378 output->initialTrackingArea.x2 = track_left + track_width; in xf86InitialPanning()
1379 output->initialTrackingArea.y2 = track_top + track_height; in xf86InitialPanning()
1382 output->initialTotalArea.x1 = left; in xf86InitialPanning()
1383 output->initialTotalArea.y1 = top; in xf86InitialPanning()
1386 output->initialTotalArea.x2 = output->initialTotalArea.x1 + width; in xf86InitialPanning()
1387 output->initialTotalArea.y2 = output->initialTotalArea.y1 + height; in xf86InitialPanning()
1391 "Broken panning specification '%s' for output %s in config file\n", in xf86InitialPanning()
1392 panning, output->name); in xf86InitialPanning()
1420 DisplayModePtr output = NULL, i, o, n, *op, prev; in xf86SortModes() local
1426 for (op = &output; (o = *op); op = &o->next) in xf86SortModes()
1433 for (o = output; o && (n = o->next); o = n) { in xf86SortModes()
1443 for (o = output; o; o = o->next) { in xf86SortModes()
1447 return output; in xf86SortModes()
1451 preferredMode(ScrnInfoPtr pScrn, xf86OutputPtr output) in preferredMode() argument
1456 preferred_mode = xf86GetOptValString(output->options, in preferredMode()
1508 * specification order is free. An output mode is matched at most
1510 * Thus a repeat mode name specification matches the next output mode
1520 processZoomModes(xf86OutputPtr output) in processZoomModes() argument
1525 zoom_modes = xf86GetOptValString(output->options, OPTION_ZOOM_MODES); in processZoomModes()
1535 for (mode = output->probed_modes; mode; mode = mode->next) in processZoomModes()
1652 /* Probe the list of modes for each output. */ in xf86ProbeOutputModes()
1654 xf86OutputPtr output = config->output[o]; in xf86ProbeOutputModes() local
1668 while (output->probed_modes != NULL) in xf86ProbeOutputModes()
1669 xf86DeleteMode(&output->probed_modes, output->probed_modes); in xf86ProbeOutputModes()
1674 output->status = (*output->funcs->detect) (output); in xf86ProbeOutputModes()
1676 if (output->status == XF86OutputStatusDisconnected && in xf86ProbeOutputModes()
1677 !xf86ReturnOptValBool(output->options, OPTION_ENABLE, FALSE)) { in xf86ProbeOutputModes()
1678 xf86OutputSetEDID(output, NULL); in xf86ProbeOutputModes()
1684 conf_monitor = output->conf_monitor; in xf86ProbeOutputModes()
1708 output_modes = (*output->funcs->get_modes) (output); in xf86ProbeOutputModes()
1714 if (!xf86GetOptValBool(output->options, OPTION_DEFAULT_MODES, in xf86ProbeOutputModes()
1718 edid_monitor = output->MonInfo; in xf86ProbeOutputModes()
1747 if (xf86GetOptValFreq(output->options, OPTION_MIN_CLOCK, in xf86ProbeOutputModes()
1750 if (xf86GetOptValFreq(output->options, OPTION_MAX_CLOCK, in xf86ProbeOutputModes()
1786 * Check output and config modes against sync range from config file in xf86ProbeOutputModes()
1805 output->probed_modes = NULL; in xf86ProbeOutputModes()
1806 output->probed_modes = xf86ModesAdd(output->probed_modes, config_modes); in xf86ProbeOutputModes()
1807 output->probed_modes = xf86ModesAdd(output->probed_modes, output_modes); in xf86ProbeOutputModes()
1808 output->probed_modes = in xf86ProbeOutputModes()
1809 xf86ModesAdd(output->probed_modes, default_modes); in xf86ProbeOutputModes()
1815 xf86ValidateModesSize(scrn, output->probed_modes, maxX, maxY, 0); in xf86ProbeOutputModes()
1818 int flags = (output->interlaceAllowed ? V_INTERLACE : 0) | in xf86ProbeOutputModes()
1819 (output->doubleScanAllowed ? V_DBLSCAN : 0); in xf86ProbeOutputModes()
1820 xf86ValidateModesFlags(scrn, output->probed_modes, flags); in xf86ProbeOutputModes()
1824 * Check all modes against output in xf86ProbeOutputModes()
1826 for (mode = output->probed_modes; mode != NULL; mode = mode->next) in xf86ProbeOutputModes()
1828 mode->status = (*output->funcs->mode_valid) (output, mode); in xf86ProbeOutputModes()
1830 xf86PruneInvalidModes(scrn, &output->probed_modes, debug_modes); in xf86ProbeOutputModes()
1832 output->probed_modes = xf86SortModes(output->probed_modes); in xf86ProbeOutputModes()
1835 preferred_mode = preferredMode(scrn, output); in xf86ProbeOutputModes()
1838 for (mode = output->probed_modes; mode; mode = mode->next) { in xf86ProbeOutputModes()
1840 if (mode != output->probed_modes) { in xf86ProbeOutputModes()
1845 mode->next = output->probed_modes; in xf86ProbeOutputModes()
1846 output->probed_modes->prev = mode; in xf86ProbeOutputModes()
1848 output->probed_modes = mode; in xf86ProbeOutputModes()
1857 processZoomModes(output); in xf86ProbeOutputModes()
1859 output->initial_rotation = xf86OutputInitialRotation(output); in xf86ProbeOutputModes()
1862 if (output->probed_modes != NULL) { in xf86ProbeOutputModes()
1864 "Printing probed modes for output %s\n", in xf86ProbeOutputModes()
1865 output->name); in xf86ProbeOutputModes()
1869 "No remaining probed modes for output %s\n", in xf86ProbeOutputModes()
1870 output->name); in xf86ProbeOutputModes()
1873 for (mode = output->probed_modes; mode != NULL; mode = mode->next) { in xf86ProbeOutputModes()
1887 * Copy one of the output mode lists to the ScrnInfo record
1912 xf86OutputPtr output = NULL, test = NULL; in SetCompatOutput() local
1921 test = config->output[o]; in SetCompatOutput()
1933 if (!output) { in SetCompatOutput()
1934 output = test; in SetCompatOutput()
1940 output = test; in SetCompatOutput()
1948 output = test; in SetCompatOutput()
1956 if (!output) { in SetCompatOutput()
1958 test = config->output[o]; in SetCompatOutput()
1964 if (!output) { in SetCompatOutput()
1965 output = test; in SetCompatOutput()
1969 output->probed_modes->HDisplay) { in SetCompatOutput()
1970 output = test; in SetCompatOutput()
1980 /* Don't change the compat output when no valid outputs found */ in SetCompatOutput()
1981 output = config->output[config->compat_output]; in SetCompatOutput()
1985 if (!output && config->num_output) { in SetCompatOutput()
1987 output = config->output[config->compat_output]; in SetCompatOutput()
1990 return output; in SetCompatOutput()
1997 xf86OutputPtr output; in xf86SetScrnInfoModes() local
2001 output = SetCompatOutput(config); in xf86SetScrnInfoModes()
2003 if (!output) in xf86SetScrnInfoModes()
2006 crtc = output->crtc; in xf86SetScrnInfoModes()
2012 /* Set scrn->modes to the mode list for the 'compat' output */ in xf86SetScrnInfoModes()
2013 scrn->modes = xf86DuplicateModes(scrn, output->probed_modes); in xf86SetScrnInfoModes()
2062 any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], TRUE); in xf86CollectEnabledOutputs()
2070 xf86OutputEnabled(config->output[o], FALSE); in xf86CollectEnabledOutputs()
2125 while ((mode = nextAspectMode(config->output[o], mode, aspect))) { in bestModeForAspect()
2128 test = xf86OutputFindClosestMode(config->output[p], mode); in bestModeForAspect()
2181 xf86OutputHasPreferredMode(config->output[o], width, height); in xf86TargetRightOf()
2197 xf86OutputHasPreferredMode(config->output[o], width, height); in xf86TargetRightOf()
2202 if (config->output[o]->tile_info.group_id) { in xf86TargetRightOf()
2207 config->output[o]->initial_x = w; in xf86TargetRightOf()
2218 struct xf86CrtcTileInfo *tile_info = &config->output[o]->tile_info, *this_tile; in xf86TargetRightOf()
2235 xf86OutputHasPreferredMode(config->output[ot], width, height); in xf86TargetRightOf()
2236 if (!config->output[ot]->tile_info.group_id) in xf86TargetRightOf()
2239 this_tile = &config->output[ot]->tile_info; in xf86TargetRightOf()
2247 config->output[ot]->initial_x = cur_x; in xf86TargetRightOf()
2248 config->output[ot]->initial_y = cur_y; in xf86TargetRightOf()
2280 Rotation r = config->output[p]->initial_rotation; in xf86TargetPreferred()
2283 if ((preferred[p] = xf86OutputHasPreferredMode(config->output[p], in xf86TargetPreferred()
2291 xf86OutputPtr output = config->output[o]; in xf86TargetPreferred() local
2298 * output as well. This catches the common case of identical in xf86TargetPreferred()
2303 mode = xf86OutputHasPreferredMode(output, pref_width, in xf86TargetPreferred()
2310 for (mode = output->probed_modes; mode; mode = mode->next) { in xf86TargetPreferred()
2311 Rotation ir = output->initial_rotation; in xf86TargetPreferred()
2349 if (config->output[p]->mm_height) in xf86TargetPreferred()
2350 aspect = (float) config->output[p]->mm_width / in xf86TargetPreferred()
2351 (float) config->output[p]->mm_height; in xf86TargetPreferred()
2381 xf86OutputPtr output; in xf86TargetAspect() local
2389 output = config->output[o]; in xf86TargetAspect()
2390 if (output->mm_height) in xf86TargetAspect()
2391 aspects[o] = (float) output->mm_width / (float) output->mm_height; in xf86TargetAspect()
2398 output = config->output[o]; in xf86TargetAspect()
2421 modes[o] = xf86OutputFindClosestMode(config->output[o], guess); in xf86TargetAspect()
2441 default_mode = xf86DefaultMode(config->output[o], width, height); in xf86TargetFallback()
2451 target_rotation = config->output[o]->initial_rotation; in xf86TargetFallback()
2459 /* Fill in other output modes */ in xf86TargetFallback()
2462 modes[o] = xf86ClosestMode(config->output[o], target_mode, in xf86TargetFallback()
2479 if (xf86OutputHasUserPreferredMode(config->output[o])) in xf86TargetUserpref()
2566 "Output %s enabled but has no modes\n", in xf86InitialConfiguration()
2567 config->output[o]->name); in xf86InitialConfiguration()
2570 "Output %s using initial mode %s +%d+%d\n", in xf86InitialConfiguration()
2571 config->output[o]->name, modes[o]->name, in xf86InitialConfiguration()
2572 config->output[o]->initial_x, in xf86InitialConfiguration()
2573 config->output[o]->initial_y); in xf86InitialConfiguration()
2577 * Set the position of each output in xf86InitialConfiguration()
2583 * Set initial panning of each output in xf86InitialConfiguration()
2588 * Assign CRTCs to fit output configuration in xf86InitialConfiguration()
2611 xf86OutputPtr output = config->output[o]; in xf86InitialConfiguration() local
2617 crtc->desiredRotation = output->initial_rotation; in xf86InitialConfiguration()
2618 crtc->desiredX = output->initial_x; in xf86InitialConfiguration()
2619 crtc->desiredY = output->initial_y; in xf86InitialConfiguration()
2622 memcpy(&crtc->panningTotalArea, &output->initialTotalArea, in xf86InitialConfiguration()
2624 memcpy(&crtc->panningTrackingArea, &output->initialTrackingArea, in xf86InitialConfiguration()
2626 memcpy(crtc->panningBorder, output->initialBorder, in xf86InitialConfiguration()
2628 output->crtc = crtc; in xf86InitialConfiguration()
2631 output->crtc = NULL; in xf86InitialConfiguration()
2698 * Check the CRTC we're going to map each output to vs. it's current
2699 * CRTC. If they don't match, we have to disable the output and the CRTC
2709 xf86OutputPtr output = config->output[o]; in xf86PrepareOutputs() local
2711 if (xf86OutputIsLeased(output)) in xf86PrepareOutputs()
2716 if (!output->funcs->get_crtc || in xf86PrepareOutputs()
2717 output->crtc != (*output->funcs->get_crtc) (output) || in xf86PrepareOutputs()
2718 output->crtc == NULL) in xf86PrepareOutputs()
2720 (*output->funcs->dpms) (output, DPMSModeOff); in xf86PrepareOutputs()
2733 xf86OutputPtr output = NULL; in xf86PrepareCrtcs() local
2741 output = config->output[o]; in xf86PrepareCrtcs()
2742 if (output->crtc == crtc) in xf86PrepareCrtcs()
2745 if (!output->funcs->get_crtc) { in xf86PrepareCrtcs()
2749 if ((*output->funcs->get_crtc) (output) == crtc) in xf86PrepareCrtcs()
2788 xf86OutputPtr output = NULL; in xf86SetDesiredModes() local
2799 output = xf86CompatOutput(scrn); in xf86SetDesiredModes()
2802 if (config->output[o]->crtc == crtc) { in xf86SetDesiredModes()
2803 output = config->output[o]; in xf86SetDesiredModes()
2808 if (!output) in xf86SetDesiredModes()
2815 xf86OutputFindClosestMode(output, scrn->currentMode); in xf86SetDesiredModes()
2836 if (config->output[o]->crtc == crtc) in xf86SetDesiredModes()
2837 config->output[o]->crtc = NULL; in xf86SetDesiredModes()
2848 * In the current world order, there are lists of modes per output, which may
2858 xf86OutputFindClosestMode(xf86OutputPtr output, DisplayModePtr desired) in xf86OutputFindClosestMode() argument
2862 for (scan = output->probed_modes; scan != NULL; scan = scan->next) { in xf86OutputFindClosestMode()
2911 * output. Then, find similar modes for the other outputs, as with the
2926 * Let the compat output drive the final mode selection in xf86SetSingleMode()
2943 xf86OutputPtr output = config->output[o]; in xf86SetSingleMode() local
2947 if (output->crtc != crtc) in xf86SetSingleMode()
2951 output_mode = xf86OutputFindClosestMode(output, crtc_mode); in xf86SetSingleMode()
2953 output->crtc = NULL; in xf86SetSingleMode()
2956 crtc_mode = xf86OutputFindClosestMode(output, desired); in xf86SetSingleMode()
2996 xf86OutputPtr output = config->output[i]; in xf86DPMSSet() local
2998 if (!xf86OutputIsLeased(output) && output->crtc != NULL) in xf86DPMSSet()
2999 (*output->funcs->dpms) (output, mode); in xf86DPMSSet()
3012 xf86OutputPtr output = config->output[i]; in xf86DPMSSet() local
3014 if (!xf86OutputIsLeased(output) && output->crtc != NULL) in xf86DPMSSet()
3015 (*output->funcs->dpms) (output, mode); in xf86DPMSSet()
3049 xf86OutputPtr output = xf86_config->output[o]; in xf86DisableUnusedFunctions() local
3051 if (!output->crtc) in xf86DisableUnusedFunctions()
3052 (*output->funcs->dpms) (output, DPMSModeOff); in xf86DisableUnusedFunctions()
3085 xf86OutputSetEDIDProperty(xf86OutputPtr output, void *data, int data_len) in xf86OutputSetEDIDProperty() argument
3090 if (output->randr_output == NULL) in xf86OutputSetEDIDProperty()
3094 RRChangeOutputProperty(output->randr_output, edid_atom, XA_INTEGER, 8, in xf86OutputSetEDIDProperty()
3098 RRDeleteOutputProperty(output->randr_output, edid_atom); in xf86OutputSetEDIDProperty()
3106 xf86OutputSetTileProperty(xf86OutputPtr output) in xf86OutputSetTileProperty() argument
3111 if (output->randr_output == NULL) in xf86OutputSetTileProperty()
3114 if (output->tile_info.group_id != 0) { in xf86OutputSetTileProperty()
3115 RRChangeOutputProperty(output->randr_output, tile_atom, XA_INTEGER, 32, in xf86OutputSetTileProperty()
3116 … PropModeReplace, TILE_PROP_NUM_ITEMS, (uint32_t *)&output->tile_info, FALSE, TRUE); in xf86OutputSetTileProperty()
3119 RRDeleteOutputProperty(output->randr_output, tile_atom); in xf86OutputSetTileProperty()
3127 xf86OutputPtr output; member
3144 p->output->MonInfo->features.hsize, in handle_detailed_physical_size()
3145 p->output->MonInfo->features.vsize); in handle_detailed_physical_size()
3156 p->output->mm_width = det_mon->section.d_timings.h_size; in handle_detailed_physical_size()
3157 p->output->mm_height = det_mon->section.d_timings.v_size; in handle_detailed_physical_size()
3160 xf86DrvMsg(p->output->scrn->scrnIndex, X_WARNING, in handle_detailed_physical_size()
3161 "Output %s: Strange aspect ratio (%i/%i), " in handle_detailed_physical_size()
3162 "consider adding a quirk\n", p->output->name, in handle_detailed_physical_size()
3189 xf86OutputSetTile(xf86OutputPtr output, struct xf86CrtcTileInfo *tile_info) in xf86OutputSetTile() argument
3192 output->tile_info = *tile_info; in xf86OutputSetTile()
3194 memset(&output->tile_info, 0, sizeof(output->tile_info)); in xf86OutputSetTile()
3196 xf86OutputSetTileProperty(output); in xf86OutputSetTile()
3201 * Set the EDID information for the specified output
3204 xf86OutputSetEDID(xf86OutputPtr output, xf86MonPtr edid_mon) in xf86OutputSetEDID() argument
3206 ScrnInfoPtr scrn = output->scrn; in xf86OutputSetEDID()
3214 free(output->MonInfo); in xf86OutputSetEDID()
3216 output->MonInfo = edid_mon; in xf86OutputSetEDID()
3217 output->mm_width = 0; in xf86OutputSetEDID()
3218 output->mm_height = 0; in xf86OutputSetEDID()
3221 xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n", in xf86OutputSetEDID()
3222 output->name); in xf86OutputSetEDID()
3226 /* Set the DDC properties for the 'compat' output */ in xf86OutputSetEDID()
3228 if (output == xf86CompatOutput(scrn) && !scrn->is_gpu) in xf86OutputSetEDID()
3232 /* Set the RandR output properties */ in xf86OutputSetEDID()
3243 xf86OutputSetEDIDProperty(output, edid_mon ? edid_mon->rawData : NULL, in xf86OutputSetEDID()
3251 p.output = output; in xf86OutputSetEDID()
3257 if ((!output->mm_width || !output->mm_height) && in xf86OutputSetEDID()
3259 output->mm_width = edid_mon->features.hsize * 10; in xf86OutputSetEDID()
3260 output->mm_height = edid_mon->features.vsize * 10; in xf86OutputSetEDID()
3267 * stored in 'output'
3270 xf86OutputGetEDIDModes(xf86OutputPtr output) in xf86OutputGetEDIDModes() argument
3272 ScrnInfoPtr scrn = output->scrn; in xf86OutputGetEDIDModes()
3273 xf86MonPtr edid_mon = output->MonInfo; in xf86OutputGetEDIDModes()
3282 xf86OutputGetEDID(xf86OutputPtr output, I2CBusPtr pDDCBus) in xf86OutputGetEDID() argument
3284 ScrnInfoPtr scrn = output->scrn; in xf86OutputGetEDID()