summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sna/sna_dri2.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 714595d8..08660c54 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -198,7 +198,6 @@ struct dri2_window {
int64_t msc_delta;
struct list cache;
uint32_t cache_size;
- int scanout;
};
static struct dri2_window *dri2_window(WindowPtr win)
@@ -214,14 +213,10 @@ static bool use_scanout(struct sna *sna,
if (priv->front)
return true;
- if (priv->scanout < 0)
- priv->scanout =
- (sna->flags & (SNA_LINEAR_FB | SNA_NO_WAIT | SNA_NO_FLIP)) == 0 &&
- draw->width == sna->front->drawable.width &&
- draw->height == sna->front->drawable.height &&
- draw->bitsPerPixel == sna->front->drawable.bitsPerPixel;
-
- return priv->scanout;
+ return (sna->flags & (SNA_LINEAR_FB | SNA_NO_WAIT | SNA_NO_FLIP)) == 0 &&
+ draw->width == sna->front->drawable.width &&
+ draw->height == sna->front->drawable.height &&
+ draw->bitsPerPixel == sna->front->drawable.bitsPerPixel;
}
static void
@@ -300,7 +295,8 @@ sna_dri2_get_back(struct sna *sna,
DBG(("%s: allocating new backbuffer\n", __FUNCTION__));
flags = CREATE_EXACT;
- if (use_scanout(sna, draw, priv)) {
+ if (get_private(back)->bo->scanout &&
+ use_scanout(sna, draw, priv)) {
DBG(("%s: requesting scanout compatible back\n", __FUNCTION__));
flags |= CREATE_SCANOUT;
}
@@ -1549,7 +1545,6 @@ draw_current_msc(DrawablePtr draw, xf86CrtcPtr crtc, uint64_t msc)
priv->crtc = crtc;
priv->msc_delta = 0;
priv->chain = NULL;
- priv->scanout = -1;
priv->cache_size = 0;
list_init(&priv->cache);
dri2_window_attach((WindowPtr)draw, priv);
@@ -1903,8 +1898,6 @@ void sna_dri2_decouple_window(WindowPtr win)
DBG(("%s: window=%ld\n", __FUNCTION__, win->drawable.id));
decouple_window(win, priv, to_sna_from_drawable(&win->drawable), true);
-
- priv->scanout = -1;
}
void sna_dri2_destroy_window(WindowPtr win)