mesa: Add missing _mm_mfence() before streaming loads.
authorMatt Turner <mattst88@gmail.com>
Thu, 1 Oct 2015 17:06:55 +0000 (10:06 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 5 Oct 2015 19:06:33 +0000 (12:06 -0700)
commit36ea9922ada5ea99e54231697a4afb31d5f6b9bf
tree769fa04f9d9a8f63e5eec0e42968c080b4d55a00
parent93161be9e7150ae5931000627833e714901cf195
mesa: Add missing _mm_mfence() before streaming loads.

According to the Intel Software Development Manual (Volume 1: Basic
Architecture, 12.10.3 Streaming Load Hint Instruction):

   Streaming loads may be weakly ordered and may appear to software to
   execute out of order with respect to other memory operations.
   Software must explicitly use fences (e.g. MFENCE) if it needs to
   preserve order among streaming loads or between streaming loads and
   other memory operations.

That is, a memory fence is needed to preserve the order between the GPU
writing the buffer and the streaming loads reading it back.

Reported-by: Joseph Nuzman <joseph.nuzman@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/main/streaming-load-memcpy.c