2 #include "util/u_upload_mgr.h"
4 #include "brw_context.h"
5 #include "brw_screen.h"
6 #include "brw_batchbuffer.h"
10 /* All batchbuffer flushes must go through this function.
12 void brw_context_flush( struct brw_context
*brw
)
17 brw_emit_query_end(brw
);
19 /* Move to the end of the current upload buffer so that we'll force choosing
20 * a new buffer next time.
22 u_upload_flush( brw
->vb
.upload_vertex
);
23 u_upload_flush( brw
->vb
.upload_index
);
25 _brw_batchbuffer_flush( brw
->batch
, __FILE__
, __LINE__
);
27 /* Mark all context state as needing to be re-emitted.
28 * This is probably not as severe as on 915, since almost all of our state
29 * is just in referenced buffers.
31 brw
->state
.dirty
.brw
|= BRW_NEW_CONTEXT
;
32 brw
->state
.dirty
.mesa
|= ~0;
33 brw
->state
.dirty
.brw
|= ~0;
34 brw
->state
.dirty
.cache
|= ~0;
36 brw
->curbe
.need_new_bo
= GL_TRUE
;
40 brw_flush( struct pipe_context
*pipe
,
42 struct pipe_fence_handle
**fence
)
44 brw_context_flush( brw_context( pipe
) );
49 static unsigned brw_is_buffer_referenced(struct pipe_context
*pipe
,
50 struct pipe_buffer
*buffer
)
52 struct brw_context
*brw
= brw_context(pipe
);
53 struct brw_screen
*bscreen
= brw_screen(brw
->base
.screen
);
55 return brw_is_buffer_referenced_by_bo( bscreen
,
60 static unsigned brw_is_texture_referenced(struct pipe_context
*pipe
,
61 struct pipe_texture
*texture
,
65 struct brw_context
*brw
= brw_context(pipe
);
66 struct brw_screen
*bscreen
= brw_screen(brw
->base
.screen
);
68 return brw_is_texture_referenced_by_bo( bscreen
,
73 void brw_pipe_flush_init( struct brw_context
*brw
)
75 brw
->base
.flush
= brw_flush
;
76 brw
->base
.is_buffer_referenced
= brw_is_buffer_referenced
;
77 brw
->base
.is_texture_referenced
= brw_is_texture_referenced
;
81 void brw_pipe_flush_cleanup( struct brw_context
*brw
)