Lines Matching refs:screen
33 nouveau_fence_new(struct nouveau_screen *screen, struct nouveau_fence **fence)
39 (*fence)->screen = screen;
61 struct nouveau_screen *screen = fence->screen;
70 if (screen->fence.tail)
71 screen->fence.tail->next = fence;
73 screen->fence.head = fence;
75 screen->fence.tail = fence;
77 screen->fence.emit(&screen->base, &fence->sequence);
87 struct nouveau_screen *screen = fence->screen;
91 if (fence == screen->fence.head) {
92 screen->fence.head = fence->next;
93 if (!screen->fence.head)
94 screen->fence.tail = NULL;
96 for (it = screen->fence.head; it && it->next != fence; it = it->next);
98 if (screen->fence.tail == fence)
99 screen->fence.tail = it;
112 nouveau_fence_cleanup(struct nouveau_screen *screen)
114 if (screen->fence.current) {
120 nouveau_fence_ref(screen->fence.current, ¤t);
123 nouveau_fence_ref(NULL, &screen->fence.current);
128 nouveau_fence_update(struct nouveau_screen *screen, bool flushed)
132 u32 sequence = screen->fence.update(&screen->base);
137 if (unlikely(screen->disable_fences))
138 sequence = screen->fence.sequence;
140 if (screen->fence.sequence_ack == sequence)
142 screen->fence.sequence_ack = sequence;
144 for (fence = screen->fence.head; fence; fence = next) {
153 if (sequence == screen->fence.sequence_ack)
156 screen->fence.head = next;
158 screen->fence.tail = NULL;
172 struct nouveau_screen *screen = fence->screen;
178 nouveau_fence_update(screen, false);
186 struct nouveau_screen *screen = fence->screen;
192 PUSH_SPACE(screen->pushbuf, 8);
201 if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel))
204 if (fence == screen->fence.current)
205 nouveau_fence_next(screen);
207 nouveau_fence_update(screen, false);
215 struct nouveau_screen *screen = fence->screen;
234 NOUVEAU_DRV_STAT(screen, any_non_kernel_fence_sync_count, 1);
241 nouveau_fence_update(screen, false);
246 screen->fence.sequence_ack, screen->fence.sequence);
252 nouveau_fence_next(struct nouveau_screen *screen)
254 if (screen->fence.current->state < NOUVEAU_FENCE_STATE_EMITTING) {
255 if (screen->fence.current->ref > 1)
256 nouveau_fence_emit(screen->fence.current);
261 nouveau_fence_ref(NULL, &screen->fence.current);
263 nouveau_fence_new(screen, &screen->fence.current);