Skip to content

Commit

Permalink
modesetting: Only add main fb if necessary
Browse files Browse the repository at this point in the history
If we're doing reverse-prime; or doing rotation the main fb is not used,
and there is no reason to add it in this case.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
jwrdegoede committed Jun 17, 2016
1 parent 8774532 commit 4313122
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions hw/xfree86/drivers/modesetting/drmmode_display.c
Expand Up @@ -408,24 +408,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
int output_count = 0;
Bool ret = TRUE;
int i;
uint32_t fb_id;
uint32_t fb_id = 0;
drmModeModeInfo kmode;
int height;

height = pScrn->virtualY;

if (drmmode->fb_id == 0) {
ret = drmModeAddFB(drmmode->fd,
pScrn->virtualX, height,
pScrn->depth, pScrn->bitsPerPixel,
drmmode_bo_get_pitch(&drmmode->front_bo),
drmmode_bo_get_handle(&drmmode->front_bo),
&drmmode->fb_id);
if (ret < 0) {
ErrorF("failed to add fb %d\n", ret);
return FALSE;
}
}

saved_mode = crtc->mode;
saved_x = crtc->x;
Expand Down Expand Up @@ -484,6 +468,22 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
fb_id = drmmode_crtc->rotate_fb_id;
x = y = 0;
}

if (fb_id == 0) {
ret = drmModeAddFB(drmmode->fd,
pScrn->virtualX, pScrn->virtualY,
pScrn->depth, pScrn->bitsPerPixel,
drmmode_bo_get_pitch(&drmmode->front_bo),
drmmode_bo_get_handle(&drmmode->front_bo),
&drmmode->fb_id);
if (ret < 0) {
ErrorF("failed to add fb %d\n", ret);
ret = FALSE;
goto done;
}
fb_id = drmmode->fb_id;
}

if (drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
fb_id, x, y, output_ids, output_count, &kmode)) {
xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR,
Expand Down

0 comments on commit 4313122

Please sign in to comment.