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