implicit-flush
This commit is contained in:
parent
d41684d545
commit
0776a42b70
|
|
@ -144,6 +144,24 @@ void intel_batch_teardown(ScrnInfoPtr scrn)
|
|||
}
|
||||
}
|
||||
|
||||
void intel_batch_do_flush(ScrnInfoPtr scrn)
|
||||
{
|
||||
intel_screen_private *intel = intel_get_screen_private(scrn);
|
||||
|
||||
while (!list_is_empty(&intel->flush_pixmaps)) {
|
||||
struct intel_pixmap *entry;
|
||||
|
||||
entry = list_first_entry(&intel->flush_pixmaps,
|
||||
struct intel_pixmap,
|
||||
flush);
|
||||
|
||||
entry->flush_read_domains = entry->flush_write_domain = 0;
|
||||
list_del(&entry->flush);
|
||||
}
|
||||
|
||||
intel->need_mi_flush = FALSE;
|
||||
}
|
||||
|
||||
void intel_batch_emit_flush(ScrnInfoPtr scrn)
|
||||
{
|
||||
intel_screen_private *intel = intel_get_screen_private(scrn);
|
||||
|
|
@ -160,18 +178,7 @@ void intel_batch_emit_flush(ScrnInfoPtr scrn)
|
|||
OUT_BATCH(MI_FLUSH | flags);
|
||||
ADVANCE_BATCH();
|
||||
|
||||
while (!list_is_empty(&intel->flush_pixmaps)) {
|
||||
struct intel_pixmap *entry;
|
||||
|
||||
entry = list_first_entry(&intel->flush_pixmaps,
|
||||
struct intel_pixmap,
|
||||
flush);
|
||||
|
||||
entry->flush_read_domains = entry->flush_write_domain = 0;
|
||||
list_del(&entry->flush);
|
||||
}
|
||||
|
||||
intel->need_mi_flush = FALSE;
|
||||
intel_batch_do_flush(scrn);
|
||||
}
|
||||
|
||||
void intel_batch_submit(ScrnInfoPtr scrn)
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
void intel_batch_init(ScrnInfoPtr scrn);
|
||||
void intel_batch_teardown(ScrnInfoPtr scrn);
|
||||
void intel_batch_emit_flush(ScrnInfoPtr scrn);
|
||||
void intel_batch_do_flush(ScrnInfoPtr scrn);
|
||||
void intel_batch_submit(ScrnInfoPtr scrn);
|
||||
void intel_batch_wait_last(ScrnInfoPtr scrn);
|
||||
|
||||
|
|
|
|||
|
|
@ -832,8 +832,11 @@ i915_prepare_composite(int op, PicturePtr source_picture,
|
|||
|
||||
intel->i915_render_state.op = op;
|
||||
|
||||
if((source && i830_uxa_pixmap_is_dirty(source)) ||
|
||||
(mask && i830_uxa_pixmap_is_dirty(mask)))
|
||||
/* BUF_INFO is an implicit flush */
|
||||
if (dest != intel->render_current_dest)
|
||||
intel_batch_do_flush(scrn);
|
||||
else if((source && i830_uxa_pixmap_is_dirty(source)) ||
|
||||
(mask && i830_uxa_pixmap_is_dirty(mask)))
|
||||
intel_batch_emit_flush(scrn);
|
||||
|
||||
intel->needs_render_state_emit = TRUE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue