Lines Matching refs:chain
119 struct sna_dri2_event *chain;
219 struct sna_dri2_event *chain;
235 return priv->chain;
1209 priv->chain = NULL;
1256 struct sna_dri2_event *chain;
1264 assert(priv->chain != NULL);
1266 if (priv->chain == info) {
1267 priv->chain = info->chain;
1271 chain = priv->chain;
1272 while (chain->chain != info)
1273 chain = chain->chain;
1274 assert(chain != info);
1275 assert(info->chain != chain);
1276 chain->chain = info->chain;
1372 struct sna_dri2_event *info, *chain;
1397 assert(priv->chain != info);
1399 if (priv->chain == NULL) {
1400 priv->chain = info;
1404 chain = priv->chain;
1405 while (chain->chain != NULL)
1406 chain = chain->chain;
1408 assert(chain != info);
1409 chain->chain = info;
1449 if (priv->chain) {
1450 struct sna_dri2_event *info, *chain;
1452 DBG(("%s: freeing chain\n", __FUNCTION__));
1454 chain = priv->chain;
1455 while ((info = chain)) {
1460 chain = info->chain;
1461 info->chain = NULL;
2014 static void chain_swap(struct sna_dri2_event *chain)
2018 if (chain->draw == NULL) {
2019 sna_dri2_event_free(chain);
2023 if (chain->queued) /* too early! */
2026 assert(chain == dri2_chain(chain->draw));
2028 __FUNCTION__, (long)chain->draw->id, chain->type));
2029 chain->queued = true;
2031 switch (chain->type) {
2034 if (chain->sna->mode.shadow &&
2035 !chain->sna->mode.shadow_damage) {
2043 vbl.request.signal = (uintptr_t)chain;
2045 if (!sna_wait_vblank(chain->sna, &vbl, chain->pipe))
2051 if (can_xchg(chain->sna, chain->draw, chain->front, chain->back)) {
2052 sna_dri2_xchg(chain->draw, chain->front, chain->back);
2053 } else if (can_xchg_crtc(chain->sna, chain->draw, chain->front, chain->back, chain->crtc)) {
2054 sna_dri2_xchg_crtc(chain->sna, chain->draw, chain->crtc, chain->front, chain->back);
2056 assert(chain->queued);
2057 chain->bo = __sna_dri2_copy_region(chain->sna, chain->draw, NULL,
2058 chain->back, chain->front,
2072 vbl.request.signal = (uintptr_t)chain;
2073 if (sna_wait_vblank(chain->sna, &vbl, chain->pipe)) {
2075 frame_swap_complete(chain, DRI2_BLIT_COMPLETE);
2076 sna_dri2_event_free(chain);
2078 if (chain->type == SWAP_THROTTLE && !swap_limit(chain->draw, 2)) {
2080 frame_swap_complete(chain, DRI2_BLIT_COMPLETE);
2221 if (info->chain) {
2222 assert(info->chain != info);
2225 chain_swap(info->chain);
2251 DBG(("%s: no pending blit, starting chain\n",
2333 struct sna_dri2_event *chain = sna->dri2.flip_pending;
2335 assert(chain->type == FLIP);
2337 __FUNCTION__, chain->type, chain->draw == NULL));
2340 if (chain->draw == NULL) {
2341 sna_dri2_event_free(chain);
2345 assert(chain == dri2_chain(chain->draw));
2346 assert(!chain->queued);
2347 chain->queued = true;
2349 if (can_flip(sna, chain->draw, chain->front, chain->back, chain->crtc) &&
2350 sna_dri2_flip(chain)) {
2354 chain->bo = __sna_dri2_copy_region(sna, chain->draw, NULL,
2355 chain->back, chain->front,
2363 chain->type = SWAP_WAIT;
2368 vbl.request.signal = (uintptr_t)chain;
2370 assert(chain->queued);
2371 if (!sna_wait_vblank(sna, &vbl, chain->pipe))
2376 frame_swap_complete(chain, DRI2_BLIT_COMPLETE);
2377 sna_dri2_event_free(chain);
2410 DBG(("%s: flip chain complete\n", __FUNCTION__));
2412 if (flip->chain) {
2415 chain_swap(flip->chain);