search for: nouveau_fence_next

Displaying 10 results from an estimated 10 matches for "nouveau_fence_next".

Did you mean: nouveau_fence_new
2013 Nov 30
1
[PATCH 1/2] nouveau: avoid leaking fences while waiting
This fixes a memory leak in some situations. Also avoids emitting an extra fence if the kick handler does the call to nouveau_fence_next itself. Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu> Cc: "9.2 10.0" <mesa-stable at lists.freedesktop.org> --- TBH I'm pretty confused by the whole fence refcounting logic and its interaction with emits, updates, etc. However valgrind was happy with this. But it...
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...*fence) nouveau_fence_emit(fence); if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) - if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel)) + if (mgr->flush(mgr)) return FALSE; - if (fence == screen->fence.current) - nouveau_fence_next(screen); + if (fence == mgr->current) + nouveau_fence_next(mgr); do { - nouveau_fence_update(screen, FALSE); + nouveau_fence_update(mgr, FALSE); if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) return TRUE; if (!spins) - NOUVEAU...
2015 Oct 10
2
[PATCH] nouveau: avoid emitting new fences unnecessarily
...PUSH_SPACE(screen->pushbuf, 8); nouveau_fence_emit(fence); + } if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel)) @@ -224,8 +226,12 @@ nouveau_fence_wait(struct nouveau_fence *fence) void nouveau_fence_next(struct nouveau_screen *screen) { - if (screen->fence.current->state < NOUVEAU_FENCE_STATE_EMITTING) - nouveau_fence_emit(screen->fence.current); + if (screen->fence.current->state < NOUVEAU_FENCE_STATE_EMITTING) { + if (screen->fence.current->ref > 1) +...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...fence *fence) nouveau_fence_emit(fence); if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) - if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel)) + if (mgr->flush(mgr)) return FALSE; - if (fence == screen->fence.current) - nouveau_fence_next(screen); + if (fence == mgr->current) + nouveau_fence_next(mgr); do { - nouveau_fence_update(screen, FALSE); + nouveau_fence_update(mgr, FALSE); if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) return TRUE; if (!spins) - NOUVEAU_DRV_S...
2014 Mar 05
0
[Bug 75279] XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup
...nts to line 203 here, while the stack to where the free'd data is subsequently used points to line 205 here: http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/drivers/nouveau/nouveau_fence.c?id=ce6dd69697ae62d9336bbd4f5808bc4d75cdcc04#n203 if (fence == screen->fence.current) nouveau_fence_next(screen); do { nouveau_fence_update(screen, FALSE); // <--- free here! if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) // <-- use-after-free return TRUE; So it seems like nouveau_fence_update (which was apparently inlined) destroys the fence object... do you...
2014 Mar 05
0
[Bug 75279] XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup
...where > the free'd data is subsequently used points to line 205 here: > > http://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/drivers/nouveau/ > nouveau_fence.c?id=ce6dd69697ae62d9336bbd4f5808bc4d75cdcc04#n203 > > > if (fence == screen->fence.current) > nouveau_fence_next(screen); > > do { > nouveau_fence_update(screen, FALSE); // <--- free here! > > if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) // <-- > use-after-free > return TRUE; > > > So it seems like nouveau_fence_update (which was appare...
2014 Jun 17
0
[PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...,27 @@ static void nv30_context_kick_notify(struct nouveau_pushbuf *push) { - struct nouveau_screen *screen; struct nv30_context *nv30; if (!push->user_priv) return; nv30 = container_of(push->user_priv, nv30, bufctx); - screen = &nv30->screen->base; - nouveau_fence_next(&screen->fence); - nouveau_fence_update(&screen->fence, TRUE); + nouveau_fence_next(&nv30->base.fence); + nouveau_fence_update(&nv30->base.fence, TRUE); if (push->bufctx) { struct nouveau_bufref *bref; LIST_FOR_EACH_ENTRY(bref, &push->...
2014 Jun 21
3
[Mesa-dev] [PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...struct nouveau_pushbuf *push) > { > - struct nouveau_screen *screen; > struct nv30_context *nv30; > > if (!push->user_priv) > return; > nv30 = container_of(push->user_priv, nv30, bufctx); > - screen = &nv30->screen->base; > > - nouveau_fence_next(&screen->fence); > - nouveau_fence_update(&screen->fence, TRUE); > + nouveau_fence_next(&nv30->base.fence); > + nouveau_fence_update(&nv30->base.fence, TRUE); > > if (push->bufctx) { > struct nouveau_bufref *bref; > LIST_FO...
2016 Feb 20
2
[Bug 94225] New: Mesa crash with "nouveau" driver and Minetest
...ectory. (gdb) bt #0 0xb5cebcf8 in PUSH_DATA (push=0x8614038, data=268496912) at ./nouveau_winsys.h:35 #1 nvc0_screen_fence_emit (pscreen=0x8613cf8, sequence=0xe0faa30) at nvc0/nvc0_screen.c:491 #2 0xb5c16747 in nouveau_fence_emit (fence=0xe0faa20) at nouveau_fence.c:102 #3 0xb5c16a08 in nouveau_fence_next (screen=screen at entry=0x8613cf8) at nouveau_fence.c:227 #4 0xb5ce9a83 in nvc0_default_kick_notify (push=0x8614038) at nvc0/nvc0_context.c:170 #5 0xb5b8a04e in pushbuf_submit (push=push at entry=0x8614038, chan=<optimized out>, chan=<optimized out>) at pushbuf.c:325 #6...
2012 May 10
12
[Bug 49727] New: wine 1.5.2 and 3Dmark2001se displays only black screen with FPS, on nv43/AGP
https://bugs.freedesktop.org/show_bug.cgi?id=49727 Bug #: 49727 Summary: wine 1.5.2 and 3Dmark2001se displays only black screen with FPS, on nv43/AGP Classification: Unclassified Product: Mesa Version: git Platform: x86 (IA32) OS/Version: Linux (All) Status: NEW Severity: normal