Displaying 6 results from an estimated 6 matches for "nouveau_fence_state_signalled".
2014 Mar 05
0
[Bug 75279] XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup
...ktop.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 need to call nouveau_fence_ref() to keep it alive?
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- ne...
2014 Mar 05
0
[Bug 75279] XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup
.../
> 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 need to call nouveau_fence_ref() to keep
> it alive?
This code is rather confusing. You have to keep in mind h...
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...*fence)
{
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
if (fence->state >= NOUVEAU_FENCE_STATE_EMITTED)
- nouveau_fence_update(screen, FALSE);
+ nouveau_fence_update(mgr, FALSE);
return fence->state == NOUVEAU_FENCE_STATE_SIGNALLED;
}
@@ -183,7 +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...
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
...8 +205,27 @@ nouveau_fence_wait(struct nouveau_fence *fence, struct pipe_debug_callback *debu
uint32_t spins = 0;
int64_t start = 0;
+ /* Fast-path for the case where the fence is already signaled to avoid
+ * messing around with mutexes and timing.
+ */
+ if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED)
+ return true;
+
if (debug && debug->debug_message)
start = os_time_get_nano();
if (!nouveau_fence_kick(fence))
return false;
+ pipe_mutex_unlock(screen->push_mutex);
+
do {
if (fence->state == NOUVEAU_FENCE_STATE_SIGNALLED) {...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...fence *fence)
{
- struct nouveau_screen *screen = fence->screen;
+ struct nouveau_fence_mgr *mgr = fence->mgr;
if (fence->state >= NOUVEAU_FENCE_STATE_EMITTED)
- nouveau_fence_update(screen, FALSE);
+ nouveau_fence_update(mgr, FALSE);
return fence->state == NOUVEAU_FENCE_STATE_SIGNALLED;
}
@@ -183,7 +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...