Recent kernels do exclude snoop access for i965g/i965gm as it does not work as advertised. However to avoid depending on a recent kernel for old hardware, mark the presence of the bug in gen_device_info.
See kernel commit df0700e53047662c167836bd6fdeea55d5d8dcfa Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Wed Sep 6 20:24:24 2017 +0100 drm/i915: Disable snooping (userptr, set-cache-level) on gen4 --- src/intel/dev/gen_device_info.c | 1 + src/intel/dev/gen_device_info.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c index b0ae4d18034..d0449a49389 100644 --- a/src/intel/dev/gen_device_info.c +++ b/src/intel/dev/gen_device_info.c @@ -93,6 +93,7 @@ gen_get_pci_device_id_override(void) static const struct gen_device_info gen_device_info_i965 = { .gen = 4, + .has_snoop_bug = true, .has_negative_rhw_bug = true, .num_slices = 1, .num_subslices = { 1, }, diff --git a/src/intel/dev/gen_device_info.h b/src/intel/dev/gen_device_info.h index 291a3cce8f8..80da9f713fa 100644 --- a/src/intel/dev/gen_device_info.h +++ b/src/intel/dev/gen_device_info.h @@ -80,6 +80,14 @@ struct gen_device_info */ bool has_negative_rhw_bug; + /** + * Some specific Intel chipset do not invalidate the CPU cache from the + * GPU for a snooped address, leading to stale data being read by the CPU + * and incorrect results. Enabling this flag will prevent the driver from + * using snooped access, e.g. userptr. + */ + bool has_snoop_bug; + /** * Some versions of Gen hardware don't do centroid interpolation correctly * on unlit pixels, causing incorrect values for derivatives near triangle -- 2.18.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev