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