mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-01 15:30:26 +01: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 (cherry picked from commit92b7407090)
This commit is contained in:
parent
cec0f17216
commit
2a54a90e51
1 changed files with 18 additions and 5 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue