Home | History | Annotate | Download | only in modes

Lines Matching refs:crtc

91 xf86RandR13VerifyPanningArea (xf86CrtcPtr crtc, int screenWidth, int screenHeight)
95 if (crtc->version < 2)
98 if (crtc->panningTotalArea.x2 <= crtc->panningTotalArea.x1) {
100 if (crtc->panningTotalArea.x1 || crtc->panningTotalArea.x2)
103 crtc->panningTotalArea.x1 = crtc->panningTotalArea.x2 = 0;
104 crtc->panningTrackingArea.x1 = crtc->panningTrackingArea.x2 = 0;
105 crtc->panningBorder[0] = crtc->panningBorder[2] = 0;
108 if (crtc->panningTotalArea.x1 < 0) {
110 crtc->panningTotalArea.x2 -= crtc->panningTotalArea.x1;
111 crtc->panningTotalArea.x1 = 0;
114 if (crtc->panningTotalArea.x2 < crtc->panningTotalArea.x1 + crtc->mode.HDisplay) {
116 crtc->panningTotalArea.x2 = crtc->panningTotalArea.x1 + crtc->mode.HDisplay;
119 if (crtc->panningTotalArea.x2 > screenWidth) {
121 crtc->panningTotalArea.x1 -= crtc->panningTotalArea.x2 - screenWidth;
122 crtc->panningTotalArea.x2 = screenWidth;
124 if (crtc->panningTotalArea.x1 < 0)
125 crtc->panningTotalArea.x1 = 0;
127 if (crtc->panningBorder[0] + crtc->panningBorder[2] > crtc->mode.HDisplay) {
129 crtc->panningBorder[0] = crtc->panningBorder[2] = 0;
134 if (crtc->panningTotalArea.y2 <= crtc->panningTotalArea.y1) {
136 if (crtc->panningTotalArea.y1 || crtc->panningTotalArea.y2)
139 crtc->panningTotalArea.y1 = crtc->panningTotalArea.y2 = 0;
140 crtc->panningTrackingArea.y1 = crtc->panningTrackingArea.y2 = 0;
141 crtc->panningBorder[1] = crtc->panningBorder[3] = 0;
144 if (crtc->panningTotalArea.y1 < 0) {
146 crtc->panningTotalArea.y2 -= crtc->panningTotalArea.y1;
147 crtc->panningTotalArea.y1 = 0;
150 if (crtc->panningTotalArea.y2 < crtc->panningTotalArea.y1 + crtc->mode.VDisplay) {
152 crtc->panningTotalArea.y2 = crtc->panningTotalArea.y1 + crtc->mode.VDisplay;
155 if (crtc->panningTotalArea.y2 > screenHeight) {
157 crtc->panningTotalArea.y1 -= crtc->panningTotalArea.y2 - screenHeight;
158 crtc->panningTotalArea.y2 = screenHeight;
160 if (crtc->panningTotalArea.y1 < 0)
161 crtc->panningTotalArea.y1 = 0;
163 if (crtc->panningBorder[1] + crtc->panningBorder[3] > crtc->mode.VDisplay) {
165 crtc->panningBorder[1] = crtc->panningBorder[3] = 0;
177 * and a crtc position (crtc_x, crtc_y),
178 * and a transform matrix which maps frame buffer to crtc,
194 * on the Screen, S, and the desired position on the CRTC,
285 /* Get the un-normalized crtc coordinates again */
329 xf86RandR13Pan (xf86CrtcPtr crtc, int x, int y)
335 if (crtc->version < 2)
338 if (! crtc->enabled ||
339 (crtc->panningTotalArea.x2 <= crtc->panningTotalArea.x1 &&
340 crtc->panningTotalArea.y2 <= crtc->panningTotalArea.y1))
343 newX = crtc->x;
344 newY = crtc->y;
345 width = crtc->mode.HDisplay;
346 height = crtc->mode.VDisplay;
348 if ((crtc->panningTrackingArea.x2 <= crtc->panningTrackingArea.x1 ||
349 (x >= crtc->panningTrackingArea.x1 && x < crtc->panningTrackingArea.x2)) &&
350 (crtc->panningTrackingArea.y2 <= crtc->panningTrackingArea.y1 ||
351 (y >= crtc->panningTrackingArea.y1 && y < crtc->panningTrackingArea.y2)))
357 * push the crtc outside. This doesn't deal with changes to the
360 if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1)
362 if (x < crtc->panningTotalArea.x1)
363 x = crtc->panningTotalArea.x1;
364 if (x >= crtc->panningTotalArea.x2)
365 x = crtc->panningTotalArea.x2 - 1;
367 if (crtc->panningTotalArea.y2 > crtc->panningTotalArea.y1)
369 if (y < crtc->panningTotalArea.y1)
370 y = crtc->panningTotalArea.y1;
371 if (y >= crtc->panningTotalArea.y2)
372 y = crtc->panningTotalArea.y2 - 1;
378 if (crtc->transform_in_use) {
379 pixman_f_transform_point(&crtc->f_framebuffer_to_crtc, &c);
381 c.v[0] -= crtc->x;
382 c.v[1] -= crtc->y;
385 if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1) {
386 if (c.v[0] < crtc->panningBorder[0]) {
387 c.v[0] = crtc->panningBorder[0];
390 if (c.v[0] >= width - crtc->panningBorder[2]) {
391 c.v[0] = width - crtc->panningBorder[2] - 1;
395 if (crtc->panningTotalArea.y2 > crtc->panningTotalArea.y1) {
396 if (c.v[1] < crtc->panningBorder[1]) {
397 c.v[1] = crtc->panningBorder[1];
400 if (c.v[1] >= height - crtc->panningBorder[3]) {
401 c.v[1] = height - crtc->panningBorder[3] - 1;
406 xf86ComputeCrtcPan (crtc->transform_in_use,
407 &crtc->f_framebuffer_to_crtc,
413 * Ensure that the crtc is within the panning region.
418 if (!crtc->transform_in_use)
421 if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1) {
422 if (newX > crtc->panningTotalArea.x2 - width)
423 newX = crtc->panningTotalArea.x2 - width;
424 if (newX < crtc->panningTotalArea.x1)
425 newX = crtc->panningTotalArea.x1;
427 if (crtc->panningTotalArea.y2 > crtc->panningTotalArea.y1) {
428 if (newY > crtc->panningTotalArea.y2 - height)
429 newY = crtc->panningTotalArea.y2 - height;
430 if (newY < crtc->panningTotalArea.y1)
431 newY = crtc->panningTotalArea.y1;
434 if (newX != crtc->x || newY != crtc->y)
435 xf86CrtcSetOrigin (crtc, newX, newY);
693 xf86CrtcPtr crtc = config->crtc[c];
694 if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1 ||
695 crtc->panningTotalArea.y2 > crtc->panningTotalArea.y1) {
696 if (crtc->panningTotalArea.x2 > crtc->panningTrackingArea.x1)
697 crtc->panningTotalArea.x2 += width - pScreen->width;
698 if (crtc->panningTotalArea.y2 > crtc->panningTrackingArea.y1)
699 crtc->panningTotalArea.y2 += height - pScreen->height;
700 if (crtc->panningTrackingArea.x2 > crtc->panningTrackingArea.x1)
701 crtc->panningTrackingArea.x2 += width - pScreen->width;
702 if (crtc->panningTrackingArea.y2 > crtc->panningTrackingArea.y1)
703 crtc->panningTrackingArea.y2 += height - pScreen->height;
704 xf86RandR13VerifyPanningArea (crtc, width, height);
705 xf86RandR13Pan (crtc, randrp->pointerX, randrp->pointerY);
759 xf86CrtcPtr crtc = config->crtc[c];
760 int crtc_width = crtc->x + xf86ModeWidth (&crtc->mode, crtc->rotation);
761 int crtc_height = crtc->y + xf86ModeHeight (&crtc->mode, crtc->rotation);
763 if (crtc->enabled) {
768 if (crtc->panningTotalArea.x2 > width)
769 width = crtc->panningTotalArea.x2;
770 if (crtc->panningTotalArea.y2 > height)
771 height = crtc->panningTotalArea.y2;
932 xf86CrtcPtr crtc = config->crtc[c];
934 RRCrtcSetRotations (crtc->randr_crtc, rotations);
956 xf86CrtcPtr crtc = config->crtc[c];
958 RRCrtcSetTransformSupport (crtc->randr_crtc, transforms);
1045 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1048 DisplayModePtr mode = &crtc->mode;
1054 x = crtc->x;
1055 y = crtc->y;
1056 rotation = crtc->rotation;
1062 if (output->crtc == crtc)
1086 crtc->transformPresent ? &crtc->transform : NULL,
1135 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1140 Bool save_enabled = crtc->enabled;
1142 if (!crtc->scrn->vtSema)
1146 if ((randr_mode != NULL) != crtc->enabled)
1148 else if (randr_mode && !xf86RandRModeMatches (randr_mode, &crtc->mode))
1151 if (rotation != crtc->rotation)
1155 if ((transform != NULL) != crtc->transformPresent)
1157 else if (transform && memcmp (&transform->transform, &crtc->transform.transform,
1161 if (x != crtc->x || y != crtc->y)
1168 save_crtcs[o] = output->crtc;
1170 if (output->crtc == crtc)
1173 new_crtc = output->crtc;
1177 new_crtc = crtc;
1180 if (new_crtc != output->crtc)
1183 output->crtc = new_crtc;
1193 crtc->enabled = randr_mode != NULL;
1201 if (!xf86CrtcSetModeTransform (crtc, &mode, rotation, transform, x, y))
1203 crtc->enabled = save_enabled;
1207 output->crtc = save_crtcs[o];
1212 xf86RandR13VerifyPanningArea (crtc, pScreen->width, pScreen->height);
1213 xf86RandR13Pan (crtc, randrp->pointerX, randrp->pointerY);
1217 crtc->desiredMode = mode;
1218 crtc->desiredRotation = rotation;
1220 crtc->desiredTransform = *transform;
1221 crtc->desiredTransformPresent = TRUE;
1223 crtc->desiredTransformPresent = FALSE;
1225 crtc->desiredX = x;
1226 crtc->desiredY = y;
1238 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1240 if (crtc->funcs->gamma_set == NULL)
1243 if (!crtc->scrn->vtSema)
1247 if (randr_crtc->gammaSize != crtc->gamma_size) {
1249 tmp_ptr = realloc(crtc->gamma_red, 3 * crtc->gamma_size * sizeof (CARD16));
1252 crtc->gamma_red = tmp_ptr;
1253 crtc->gamma_green = crtc->gamma_red + crtc->gamma_size;
1254 crtc->gamma_blue = crtc->gamma_green + crtc->gamma_size;
1257 crtc->gamma_size = randr_crtc->gammaSize;
1258 memcpy (crtc->gamma_red, randr_crtc->gammaRed, crtc->gamma_size * sizeof (CARD16));
1259 memcpy (crtc->gamma_green, randr_crtc->gammaGreen, crtc->gamma_size * sizeof (CARD16));
1260 memcpy (crtc->gamma_blue, randr_crtc->gammaBlue, crtc->gamma_size * sizeof (CARD16));
1262 /* Only set it when the crtc is actually running.
1265 if (crtc->active)
1266 crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
1267 crtc->gamma_blue, crtc->gamma_size);
1276 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1278 if (!crtc->gamma_size)
1281 if (!crtc->gamma_red || !crtc->gamma_green || !crtc->gamma_blue)
1285 if (randr_crtc->gammaSize != crtc->gamma_size) {
1287 tmp_ptr = realloc(randr_crtc->gammaRed, 3 * crtc->gamma_size * sizeof (CARD16));
1291 randr_crtc->gammaGreen = randr_crtc->gammaRed + crtc->gamma_size;
1292 randr_crtc->gammaBlue = randr_crtc->gammaGreen + crtc->gamma_size;
1294 randr_crtc->gammaSize = crtc->gamma_size;
1295 memcpy (randr_crtc->gammaRed, crtc->gamma_red, crtc->gamma_size * sizeof (CARD16));
1296 memcpy (randr_crtc->gammaGreen, crtc->gamma_green, crtc->gamma_size * sizeof (CARD16));
1297 memcpy (randr_crtc->gammaBlue, crtc->gamma_blue, crtc->gamma_size * sizeof (CARD16));
1446 crtcs[ncrtc++] = config->crtc[c]->randr_crtc;
1448 if (output->crtc)
1449 randr_crtc = output->crtc->randr_crtc;
1536 xf86CrtcPtr crtc = config->crtc[c];
1538 crtc->randr_crtc = RRCrtcCreate (pScreen, crtc);
1539 RRCrtcGammaSetSize (crtc->randr_crtc, 256);
1570 xf86RandR12CrtcNotify (config->crtc[c]->randr_crtc);
1594 xf86RandR12CrtcNotify (config->crtc[c]->randr_crtc);
1611 xf86RandR13Pan (config->crtc[c], x, y);
1621 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1623 if (crtc->version < 2)
1626 memcpy (totalArea, &crtc->panningTotalArea, sizeof(BoxRec));
1628 memcpy (trackingArea, &crtc->panningTrackingArea, sizeof(BoxRec));
1630 memcpy (border, crtc->panningBorder, 4*sizeof(INT16));
1643 xf86CrtcPtr crtc = randr_crtc->devPrivate;
1649 if (crtc->version < 2)
1652 memcpy (&oldTotalArea, &crtc->panningTotalArea, sizeof(BoxRec));
1653 memcpy (&oldTrackingArea, &crtc->panningTrackingArea, sizeof(BoxRec));
1654 memcpy (oldBorder, crtc->panningBorder, 4*sizeof(INT16));
1657 memcpy (&crtc->panningTotalArea, totalArea, sizeof(BoxRec));
1659 memcpy (&crtc->panningTrackingArea, trackingArea, sizeof(BoxRec));
1661 memcpy (crtc->panningBorder, border, 4*sizeof(INT16));
1663 if (xf86RandR13VerifyPanningArea (crtc, pScreen->width, pScreen->height)) {
1664 xf86RandR13Pan (crtc, randrp->pointerX, randrp->pointerY);
1668 memcpy (&crtc->panningTotalArea, &oldTotalArea, sizeof(BoxRec));
1669 memcpy (&crtc->panningTrackingArea, &oldTrackingArea, sizeof(BoxRec));
1670 memcpy (crtc->panningBorder, oldBorder, 4*sizeof(INT16));
1677 * any per-crtc setup. You asked for it...
1699 RRCrtcPtr crtc = xf86CompatRRCrtc(pScrn);
1702 if (!crtc)
1705 size = max(0, crtc->gammaSize);
1720 RRCrtcGammaSet(crtc, red, green, blue);