diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 0aa7557f..1407e2b8 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -1625,7 +1625,9 @@ void sna_copy_fbcon(struct sna *sna) assert((sna->flags & SNA_IS_HOSTED) == 0); priv = sna_pixmap(sna->front); - assert(priv && priv->gpu_bo); + assert(priv); + if (priv->gpu_bo == NULL) + return; /* Scan the connectors for a framebuffer and assume that is the fbcon */ VG_CLEAR(fbcon); diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 7eed2143..14b9c318 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -248,15 +248,11 @@ static Bool sna_create_screen_resources(ScreenPtr screen) return FALSE; } - if (!sna_pixmap_force_to_gpu(new_front, MOVE_READ)) { - xf86DrvMsg(screen->myNum, X_ERROR, - "[intel] Failed to allocate video resources for front buffer %dx%d at depth %d\n", - screen->width, - screen->height, - screen->rootDepth); - screen->DestroyPixmap(new_front); - return FALSE; - } + /* Prefer to use the GPU for rendering into the eventual scanout + * bo so that we do not unduly stall when it is time to attach + * it to the CRTCs. + */ + sna_pixmap_force_to_gpu(new_front, MOVE_READ | __MOVE_SCANOUT); screen->SetScreenPixmap(new_front); assert(screen->GetScreenPixmap(screen) == new_front);