diff options
author | Ilia Mirkin <[email protected]> | 2015-10-05 15:19:05 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2015-10-07 04:30:05 -0400 |
commit | 47d11990b2ca3eb666b8ac81fee7f7eb5019eba1 (patch) | |
tree | a18b23e986ce8ebce547f0c6bc1bef0184d30eae /src/gallium/drivers/nouveau/nv30/nv30_screen.c | |
parent | 64d9d4b73031d1bc23ae869e2afad86ed01edea5 (diff) |
nouveau: make sure there's always room to emit a fence
I started seeing a lot of situations on nv30 where fence emission
wouldn't fit into the previous buffer (causing assertions). This ensures
that whenever checking for space, we always leave a bit of extra room
for the fence emission commands. Adjusts the nv30 and nvc0 fence
emission logic to bypass the space checking as well.
Signed-off-by: Ilia Mirkin <[email protected]>
Cc: [email protected]
Reviewed-by: Samuel Pitoiset <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv30/nv30_screen.c')
-rw-r--r-- | src/gallium/drivers/nouveau/nv30/nv30_screen.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c index 39267b354e3..335c163b661 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c @@ -347,7 +347,9 @@ nv30_screen_fence_emit(struct pipe_screen *pscreen, uint32_t *sequence) *sequence = ++screen->base.fence.sequence; - BEGIN_NV04(push, NV30_3D(FENCE_OFFSET), 2); + assert(PUSH_AVAIL(push) >= 3); + PUSH_DATA (push, NV30_3D_FENCE_OFFSET | + (2 /* size */ << 18) | (7 /* subchan */ << 13)); PUSH_DATA (push, 0); PUSH_DATA (push, *sequence); } |