Displaying 13 results from an estimated 13 matches for "flush_notify".
2010 Jan 12
1
[libdrm PATCH] nouveau: disable flush_notify on channel_free
From: Marcin Slusarz <marcin.slusarz at gmail.com>
Subject: [libdrm PATCH] nouveau: disable flush_notify on channel_free
We don't want do call flush_notify when we will FIRE the RING
a couple of lines later, because grobj bound to this channel
might be already freed.
---
nouveau/nouveau_channel.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/nouveau/nouveau_channel.c b...
2015 Oct 10
2
[PATCH] nouveau: avoid emitting new fences unnecessarily
...u_fence.c b/src/gallium/drivers/nouveau/nouveau_fence.c
index ee4e08d..18b1592 100644
--- a/src/gallium/drivers/nouveau/nouveau_fence.c
+++ b/src/gallium/drivers/nouveau/nouveau_fence.c
@@ -190,8 +190,10 @@ nouveau_fence_wait(struct nouveau_fence *fence)
/* wtf, someone is waiting on a fence in flush_notify handler? */
assert(fence->state != NOUVEAU_FENCE_STATE_EMITTING);
- if (fence->state < NOUVEAU_FENCE_STATE_EMITTED)
+ if (fence->state < NOUVEAU_FENCE_STATE_EMITTED) {
+ PUSH_SPACE(screen->pushbuf, 8);
nouveau_fence_emit(fence);
+ }
if (fence->stat...
2009 Dec 05
1
[PATCH] nouveau: avoid running out of relocs (attempt 4)
...@@ -58,6 +58,9 @@ nv30_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv30->pipe.is_texture_referenced = nouveau_is_texture_referenced;
nv30->pipe.is_buffer_referenced = nouveau_is_buffer_referenced;
+ screen->base.channel->user_private = nv30;
+ screen->base.channel->flush_notify = nv30_state_flush_notify;
+
nv30_init_query_functions(nv30);
nv30_init_surface_functions(nv30);
nv30_init_state_functions(nv30);
diff --git a/src/gallium/drivers/nv30/nv30_context.h b/src/gallium/drivers/nv30/nv30_context.h
index 8d49366..6f44b1c 100644
--- a/src/gallium/drivers/nv30/nv30_co...
2010 Mar 10
0
nv50/gallium: a few comments about latest patches
...then for
some state like stencil ref or blend color just using RING directly
still seems to be better to me.
Anyway, the code became nicer here :-)
- nv50: always emit dummy relocs for all still-referenced buffers
flush notify took care of that ...
- nv50: remove horrific abuse of nouveau_channel.flush_notify
Horrific ? The card doesn't complain about relocating between Begin/End,
and I think I even remember testing that they take effect immediately.
- nv50: move magic 0x142c stuff to after state emission
It's not too magical, it's used when vertex buffers have been modified,
and when you e...
2009 Dec 13
3
[PATCH] nouveau: avoid running out of relocs (attempt 5)
...@@ -58,6 +58,9 @@ nv30_create(struct pipe_screen *pscreen, unsigned pctx_id)
nv30->pipe.is_texture_referenced = nouveau_is_texture_referenced;
nv30->pipe.is_buffer_referenced = nouveau_is_buffer_referenced;
+ screen->base.channel->user_private = nv30;
+ screen->base.channel->flush_notify = nv30_state_flush_notify;
+
nv30_init_query_functions(nv30);
nv30_init_surface_functions(nv30);
nv30_init_state_functions(nv30);
diff --git a/src/gallium/drivers/nv30/nv30_context.h b/src/gallium/drivers/nv30/nv30_context.h
index 8d49366..6f44b1c 100644
--- a/src/gallium/drivers/nv30/nv30_co...
2013 Nov 30
1
[PATCH 1/2] nouveau: avoid leaking fences while waiting
..._fence.c b/src/gallium/drivers/nouveau/nouveau_fence.c
index dea146c..c686710 100644
--- a/src/gallium/drivers/nouveau/nouveau_fence.c
+++ b/src/gallium/drivers/nouveau/nouveau_fence.c
@@ -189,16 +189,15 @@ nouveau_fence_wait(struct nouveau_fence *fence)
/* wtf, someone is waiting on a fence in flush_notify handler? */
assert(fence->state != NOUVEAU_FENCE_STATE_EMITTING);
- if (fence->state < NOUVEAU_FENCE_STATE_EMITTED) {
+ if (fence->state < NOUVEAU_FENCE_STATE_EMITTED)
nouveau_fence_emit(fence);
- if (fence == screen->fence.current)
- nouveau_fence_...
2013 Apr 30
1
[Bug 64074] New: Mesalib Installation Error
...bj *gr;
unsigned sequence;
};
struct nouveau_channel {
uint32_t *cur;
uint32_t *end;
struct nouveau_device *device;
int id;
struct nouveau_grobj *nullobj;
struct nouveau_grobj *vram;
struct nouveau_grobj *gart;
void *user_private;
void (*hang_notify)(struct nouveau_channel *);
void (*flush_notify)(struct nouveau_channel *);
struct nouveau_subchannel subc[8];
unsigned subc_sequence;
};
int
nouveau_channel_alloc(struct nouveau_device *, uint32_t fb, uint32_t tt,
int pushbuf_size, struct nouveau_channel **);
void
nouveau_channel_free(struct nouveau_channel **);
#endif
--
You ar...
2009 Nov 04
1
[PATCH] nv10/exa: Spring-cleaning
...gt;pmpict = pMaskPicture;
- pNv->pdpict = pDstPicture;
- pNv->pspix = pSrc;
- pNv->pmpix = pMask;
- pNv->pdpix = pDst;
+ pNv->pspict = pict_src;
+ pNv->pmpict = pict_mask;
+ pNv->pdpict = pict_dst;
+ pNv->pspix = src;
+ pNv->pmpix = mask;
+ pNv->pdpix = dst;
chan->flush_notify = NV10StateCompositeReemit;
- if (NV10Check_A8plusA8_Feasability(pSrcPicture, pMaskPicture, pDstPicture, op)) {
- state.is_a8_plus_a8 = TRUE;
- NV10SetBuffer(pNv, pDstPicture, pDst);
- NV10SetPictOp(pNv, op);
- NV10SetTexture(pNv, 0, pSrcPicture, pSrc);
- NV10SetTexture(pNv, 1, pSrcPicture,...
2010 Jan 18
1
[PATCH 1/2] nv30-nv40: Rewrite primitive splitting and emission
The current code for primitive splitting and emission on pre-nv50 is
severely broken.
In particular:
1. Quads and lines are totally broken because "&= 3" should be "&= ~3"
and similar for lines
2. Triangle fans and polygons are broken because the first vertex
must be repeated for each split chunk
3. Line loops are broken because the must be converted to a line strip,
2012 Mar 14
13
[Bug 47306] New: segfault in nouveau_fence_update
...to start mythtv's mythfrontend it will segfault with
the following stacktrace:
#0 nouveau_fence_update (screen=0x0, flushed=1 '\001') at nouveau_fence.c:141
fence = <optimized out>
next = 0x0
sequence = <optimized out>
#1 0xaae1ec77 in nv50_default_flush_notify (chan=0x8f29af0) at
nv50_context.c:68
nv50 = 0xa8248c68
#2 0xad19ff50 in nouveau_pushbuf_flush () from
/usr/lib/i386-linux-gnu/libdrm_nouveau.so.1
No symbol table info available.
#3 0xaae1ec0e in FIRE_RING (chan=<optimized out>) at
/usr/include/nouveau/nouveau_pushbuf.h:101
No local...
2010 Apr 20
1
[PATCH] nv30/exa : cleanup from nv40 exa
...1, sY1, dstX, dstY + height);
+ CV_OUT(sX2, sY2, dstX + 2*width, dstY + height);
}
BEGIN_RING(chan, rankine, NV34TCL_VERTEX_BEGIN_END, 1);
- OUT_RING (chan, 0);
+ OUT_RING (chan, NV34TCL_VERTEX_BEGIN_END_STOP);
}
void
@@ -661,6 +599,9 @@ NV30EXADoneComposite(PixmapPtr pdPix)
chan->flush_notify = NULL;
}
+#define NV30TCL_CHIPSET_3X_MASK 0x00000003
+#define NV35TCL_CHIPSET_3X_MASK 0x000001e0
+#define NV34TCL_CHIPSET_3X_MASK 0x00000010
Bool
NVAccelInitNV30TCL(ScrnInfoPtr pScrn)
{
@@ -673,27 +614,22 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn)
if (!nv40_fp_map_a8[0])
NV30EXAHackupA8Sh...
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...@@ nouveau_fence_signalled(struct nouveau_fence *fence)
boolean
nouveau_fence_wait(struct nouveau_fence *fence)
{
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
uint32_t spins = 0;
/* wtf, someone is waiting on a fence in flush_notify handler? */
@@ -193,19 +193,19 @@ nouveau_fence_wait(struct nouveau_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))...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...+183,7 @@ nouveau_fence_signalled(struct nouveau_fence *fence)
boolean
nouveau_fence_wait(struct nouveau_fence *fence)
{
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
uint32_t spins = 0;
/* wtf, someone is waiting on a fence in flush_notify handler? */
@@ -193,19 +193,19 @@ nouveau_fence_wait(struct nouveau_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))...