Displaying 9 results from an estimated 9 matches for "nouveau_fence_state_emitted".
2015 Oct 10
2
[PATCH] nouveau: avoid emitting new fences unnecessarily
...au/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->state < NOUVEAU_FENCE_STATE_FLUSHED)
if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel))
@@ -224,8 +...
2013 Nov 30
1
[PATCH 1/2] nouveau: avoid leaking fences while waiting
...u/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_new(screen, &screen->fence.current, FALSE);
- }
- if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) {
+ if (fence-&...
2014 Mar 06
2
[PATCH] nouveau: fix fence waiting logic in screen destroy
...++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
@@ -308,10 +308,16 @@ nv30_screen_destroy(struct pipe_screen *pscreen)
if (!nouveau_drm_screen_unref(&screen->base))
return;
- if (screen->base.fence.current &&
- screen->base.fence.current->state >= NOUVEAU_FENCE_STATE_EMITTED) {
- nouveau_fence_wait(screen->base.fence.current);
- nouveau_fence_ref (NULL, &screen->base.fence.current);
+ if (screen->base.fence.current) {
+ struct nouveau_fence *current = NULL;
+
+ /* nouveau_fence_wait will create a new current fence, so wait on the
+...
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...mgr->head = fence;
- screen->fence.tail = fence;
+ mgr->tail = fence;
- screen->fence.emit(&screen->base, &fence->sequence);
+ mgr->emit(mgr, &fence->sequence);
assert(fence->state == NOUVEAU_FENCE_STATE_EMITTING);
fence->state = NOUVEAU_FENCE_STATE_EMITTED;
@@ -109,19 +109,19 @@ void
nouveau_fence_del(struct nouveau_fence *fence)
{
struct nouveau_fence *it;
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
if (fence->state == NOUVEAU_FENCE_STATE_EMITTED ||
fence->s...
2014 Mar 07
0
[PATCH] nouveau: fix fence waiting logic in screen destroy
...au/nv30/nv30_screen.c
> @@ -308,10 +308,16 @@ nv30_screen_destroy(struct pipe_screen *pscreen)
> if (!nouveau_drm_screen_unref(&screen->base))
> return;
>
> - if (screen->base.fence.current &&
> - screen->base.fence.current->state >= NOUVEAU_FENCE_STATE_EMITTED) {
> - nouveau_fence_wait(screen->base.fence.current);
> - nouveau_fence_ref (NULL, &screen->base.fence.current);
> + if (screen->base.fence.current) {
> + struct nouveau_fence *current = NULL;
> +
> + /* nouveau_fence_wait will create a new curr...
2014 Jun 12
6
[Bug 79946] New: Segmentation violation at nouveau_fence.c
https://bugs.freedesktop.org/show_bug.cgi?id=79946
Priority: medium
Bug ID: 79946
Assignee: nouveau at lists.freedesktop.org
Summary: Segmentation violation at nouveau_fence.c
Severity: minor
Classification: Unclassified
OS: Linux (All)
Reporter: zeccav at gmail.com
Hardware: x86-64 (AMD64)
2014 Jul 10
3
[PATCH 0/3] nvc0: ARB_(multi_)draw_indirect support
The main patches are from Christoph. Unfortunately they're a little beyond my
understanding of all the vertex-related details, but they generally seemed
fine. I'm just going to push these unless someone steps up to review them.
Christoph Bumiller (2):
nvc0: add support for indirect drawing
nvc0: fix translate path for PRIM_RESTART_WITH_DRAW_ARRAYS
Ilia Mirkin (1):
nouveau: check if
2016 Jun 05
0
[RFC PATCH] nouveau: add locking
...,9 @@ nouveau_fence_del(struct nouveau_fence *fence)
struct nouveau_fence *it;
struct nouveau_screen *screen = fence->screen;
+ /* XXX This can race against fence_update. But fence_update can also call
+ * into this, so ... be have to be careful.
+ */
if (fence->state == NOUVEAU_FENCE_STATE_EMITTED ||
fence->state == NOUVEAU_FENCE_STATE_FLUSHED) {
if (fence == screen->fence.head) {
@@ -123,6 +128,7 @@ nouveau_fence_update(struct nouveau_screen *screen, bool flushed)
return;
screen->fence.sequence_ack = sequence;
+ pipe_mutex_lock(screen->fence.list_mu...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...mgr->head = fence;
- screen->fence.tail = fence;
+ mgr->tail = fence;
- screen->fence.emit(&screen->base, &fence->sequence);
+ mgr->emit(mgr, &fence->sequence);
assert(fence->state == NOUVEAU_FENCE_STATE_EMITTING);
fence->state = NOUVEAU_FENCE_STATE_EMITTED;
@@ -109,19 +109,19 @@ void
nouveau_fence_del(struct nouveau_fence *fence)
{
struct nouveau_fence *it;
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
if (fence->state == NOUVEAU_FENCE_STATE_EMITTED ||
fence->state =...