mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
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
This commit is contained in:
parent
da634a4acb
commit
92b7407090
1 changed files with 18 additions and 5 deletions
|
|
@ -538,9 +538,8 @@ vf_invalidate_for_vb_48bit_transitions(struct brw_context *brw)
|
|||
{
|
||||
#if GEN_GEN >= 8 && GEN_GEN < 11
|
||||
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]) {
|
||||
|
|
@ -549,9 +548,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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue