i965: include draw_params/derived_draw_params for VF cache workaround

These buffers are using VB slots and should be included in the
workaround decision.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Fixes: a363bb2cd0 ("i965: Allocate VMA in userspace for full-PPGTT systems.")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109072
(cherry picked from commit 92b7407090)
This commit is contained in:
Lionel Landwerlin 2019-01-03 16:17:04 +00:00 committed by Emil Velikov
parent cec0f17216
commit 2a54a90e51

View file

@ -505,9 +505,8 @@ vf_invalidate_for_vb_48bit_transitions(struct brw_context *brw)
{
#if GEN_GEN >= 8
bool need_invalidate = false;
unsigned i;
for (i = 0; i < brw->vb.nr_buffers; i++) {
for (unsigned i = 0; i < brw->vb.nr_buffers; i++) {
uint16_t high_bits = pinned_bo_high_bits(brw->vb.buffers[i].bo);
if (high_bits != brw->vb.last_bo_high_bits[i]) {
@ -516,9 +515,23 @@ vf_invalidate_for_vb_48bit_transitions(struct brw_context *brw)
}
}
/* Don't bother with draw parameter buffers - those are generated by
* the driver so we can select a consistent memory zone.
*/
if (brw->draw.draw_params_bo) {
uint16_t high_bits = pinned_bo_high_bits(brw->draw.draw_params_bo);
if (brw->vb.last_bo_high_bits[brw->vb.nr_buffers] != high_bits) {
need_invalidate = true;
brw->vb.last_bo_high_bits[brw->vb.nr_buffers] = high_bits;
}
}
if (brw->draw.derived_draw_params_bo) {
uint16_t high_bits = pinned_bo_high_bits(brw->draw.derived_draw_params_bo);
if (brw->vb.last_bo_high_bits[brw->vb.nr_buffers + 1] != high_bits) {
need_invalidate = true;
brw->vb.last_bo_high_bits[brw->vb.nr_buffers + 1] = high_bits;
}
}
if (need_invalidate) {
brw_emit_pipe_control_flush(brw, PIPE_CONTROL_VF_CACHE_INVALIDATE);