From: Hans de Goede <hdego...@redhat.com>

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 <hdego...@redhat.com>
(Ported from xserver commit 4313122dea0df9affc280ee698e929489061ccc6)
(Ported from amdgpu commit a3ca1500703837cbb8d49c554199a25dea7d5e1e)

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/drmmode_display.c | 44 ++++++++++++++++----------------------------
 1 file changed, 16 insertions(+), 28 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 4f25ae7..25c0e99 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -734,34 +734,6 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
        int i;
        int fb_id;
        drmModeModeInfo kmode;
-       int pitch;
-       uint32_t tiling_flags = 0;
-
-       if (info->allowColorTiling) {
-               if (info->ChipFamily >= CHIP_FAMILY_R600)
-                       tiling_flags |= RADEON_TILING_MICRO;
-               else
-                       tiling_flags |= RADEON_TILING_MACRO;
-       }
-
-       pitch = RADEON_ALIGN(pScrn->displayWidth, 
drmmode_get_pitch_align(pScrn, info->pixel_bytes, tiling_flags)) *
-               info->pixel_bytes;
-       if (info->ChipFamily >= CHIP_FAMILY_R600) {
-               pitch = info->front_surface.level[0].pitch_bytes;
-       }
-
-       if (drmmode->fb_id == 0) {
-               ret = drmModeAddFB(drmmode->fd,
-                                  pScrn->virtualX, pScrn->virtualY,
-                                   pScrn->depth, pScrn->bitsPerPixel,
-                                  pitch,
-                                  info->front_bo->handle,
-                                   &drmmode->fb_id);
-                if (ret < 0) {
-                        ErrorF("failed to add fb\n");
-                        return FALSE;
-                }
-        }
 
        saved_mode = crtc->mode;
        saved_x = crtc->x;
@@ -869,6 +841,22 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr 
mode,
                        }
                }
 
+               if (fb_id == 0) {
+                       if (drmModeAddFB(drmmode->fd,
+                                        pScrn->virtualX,
+                                        pScrn->virtualY,
+                                        pScrn->depth, pScrn->bitsPerPixel,
+                                        pScrn->displayWidth * 
info->pixel_bytes,
+                                        info->front_bo->handle,
+                                        &drmmode->fb_id) < 0) {
+                               ErrorF("failed to add fb\n");
+                               ret = FALSE;
+                               goto done;
+                       }
+
+                       fb_id = drmmode->fb_id;
+               }
+
                /* Wait for any pending flip to finish */
                do {} while (drmmode_crtc->flip_pending &&
                             drmHandleEvent(drmmode->fd,
-- 
2.9.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to