On 02/22/2015 08:40 PM, Matt Turner wrote: > --- > I can't believe this is beneficial, especially since it came from the > i915tex import.
My recollection is that memcpy does some weird optimizations (copying from the end first) assuming the memory is mapped in a certain way. We don't necessarily map memory that way, and those optimizations hurt quite a bit. It's worth testing especially on Atom. > src/mesa/drivers/dri/i965/brw_context.h | 27 > --------------------------- > src/mesa/drivers/dri/i965/intel_batchbuffer.c | 2 +- > 2 files changed, 1 insertion(+), 28 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_context.h > b/src/mesa/drivers/dri/i965/brw_context.h > index 197ed3e..7e86c1b 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -1920,33 +1920,6 @@ gen6_upload_push_constants(struct brw_context *brw, > struct brw_stage_state *stage_state, > enum aub_state_struct_type type); > > -/* ================================================================ > - * From linux kernel i386 header files, copes with odd sizes better > - * than COPY_DWORDS would: > - * XXX Put this in src/mesa/main/imports.h ??? > - */ > -#if defined(i386) || defined(__i386__) > -static inline void * __memcpy(void * to, const void * from, size_t n) > -{ > - int d0, d1, d2; > - __asm__ __volatile__( > - "rep ; movsl\n\t" > - "testb $2,%b4\n\t" > - "je 1f\n\t" > - "movsw\n" > - "1:\ttestb $1,%b4\n\t" > - "je 2f\n\t" > - "movsb\n" > - "2:" > - : "=&c" (d0), "=&D" (d1), "=&S" (d2) > - :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from) > - : "memory"); > - return (to); > -} > -#else > -#define __memcpy(a,b,c) memcpy(a,b,c) > -#endif > - > #ifdef __cplusplus > } > #endif > diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > index 7b96005..45c7493 100644 > --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > @@ -390,7 +390,7 @@ intel_batchbuffer_data(struct brw_context *brw, > { > assert((bytes & 3) == 0); > intel_batchbuffer_require_space(brw, bytes, ring); > - __memcpy(brw->batch.map + brw->batch.used, data, bytes); > + memcpy(brw->batch.map + brw->batch.used, data, bytes); > brw->batch.used += bytes >> 2; > } > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev