nvfx: stop using flush_notify
Rather than emitting relocations on flush notifications, emit them in nvfx_state_start.
This commit is contained in:
@@ -67,7 +67,6 @@ nvfx_create(struct pipe_screen *pscreen, void *priv)
|
||||
nvfx->pipe.flush = nvfx_flush;
|
||||
|
||||
screen->base.channel->user_private = nvfx;
|
||||
screen->base.channel->flush_notify = nvfx_state_flush_notify;
|
||||
|
||||
nvfx->is_nv4x = screen->is_nv4x;
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@ nv40_fragtex_build(struct nvfx_context *nvfx, int unit);
|
||||
extern void nvfx_init_state_functions(struct nvfx_context *nvfx);
|
||||
|
||||
/* nvfx_state_emit.c */
|
||||
extern void nvfx_state_flush_notify(struct nouveau_channel *chan);
|
||||
extern void nvfx_state_relocate(struct nvfx_context *nvfx);
|
||||
extern boolean nvfx_state_validate(struct nvfx_context *nvfx);
|
||||
extern boolean nvfx_state_validate_swtnl(struct nvfx_context *nvfx);
|
||||
extern void nvfx_state_emit(struct nvfx_context *nvfx);
|
||||
|
||||
@@ -81,12 +81,24 @@ nvfx_state_emit(struct nvfx_context *nvfx)
|
||||
}
|
||||
}
|
||||
state->dirty = 0;
|
||||
|
||||
/* we need to ensure there is enough space to output relocations in one go */
|
||||
unsigned max_relocs = 0
|
||||
+ 16 /* vertex buffers, incl. dma flag */
|
||||
+ 2 /* index buffer plus format+dma flag */
|
||||
+ 2 * 5 /* 4 cbufs + zsbuf, plus dma objects */
|
||||
+ 2 * 16 /* fragment textures plus format+dma flag */
|
||||
+ 2 * 4 /* vertex textures plus format+dma flag */
|
||||
+ 1 /* fragprog incl dma flag */
|
||||
;
|
||||
MARK_RING(chan, max_relocs * 2, max_relocs * 2);
|
||||
nvfx_state_relocate(nvfx);
|
||||
}
|
||||
|
||||
void
|
||||
nvfx_state_flush_notify(struct nouveau_channel *chan)
|
||||
nvfx_state_relocate(struct nvfx_context *nvfx)
|
||||
{
|
||||
struct nvfx_context *nvfx = chan->user_private;
|
||||
struct nouveau_channel *chan = nvfx->screen->base.channel;
|
||||
struct nvfx_state *state = &nvfx->state;
|
||||
unsigned i, samplers;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user