[Mesa-dev] [PATCH 28/29] i965: Drop random 32-bit assembly implementation of memcpy().

Roland Mainz roland.mainz at nrubsig.org
Mon Sep 30 17:47:52 PDT 2013


On Tue, Oct 1, 2013 at 2:27 AM, Ian Romanick <idr at freedesktop.org> wrote:
> On 09/27/2013 04:46 PM, Kenneth Graunke wrote:
>> This was only used for uploading batchbuffer data, and only on 32-bit
>> systems.  If this is actually useful, we might want to use it more
>> widely.  But more than likely, it isn't.
>
> This probably is still useful, alas.  The glibc memcpy wants to do an
> Atom-friendly backwards walk of the addresses.

Erm... just curious: Are you sure this is done for Atom ? Originally
such copy-from-highest-to-lowest-address copying is (should be: "was")
done to enable overlapping copies... but at least POSIX mandates that
|memcpy()| is not required to support overlapping copies and users
should use |memmove()| instead in such cases (for example Solaris uses
the POSIX interpretation in this case... and AFAIK Apple OSX even hits
you with an |abort()| if you attempt an overlapping copy with
|memcpy()| (or |strcpy()|) (and AFAIK "valgrind" will complain about
such abuse of |memcpy()|/|strcpy()|/|stpcpy()|, too)).

> For some kinds of
> mappings (uncached?), this breaks write combining and ruins performance.

That more or less breaks performance _everywhere_ because automatic
prefetch obtains the next cache line and not the previous one.

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)


More information about the mesa-dev mailing list