Good Maarten for reporting the bug, bad Maarten for silently fixing up my
mistakes when testing! Thanks to Colin Walter and his tinderbox.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Otherwise chaos ensues:
Invalid read of size 8
==8647== at 0x8477BC1: has_offload_slaves.isra.38 (sna_accel.c:14402)
==8647== by 0x84958E7: sna_accel_block_handler (sna_accel.c:13729)
==8647== by 0x164B13: BlockHandler (dixutils.c:387)
==8647== by 0x2B5273: WaitForSomething (WaitFor.c:210)
==8647== by 0x160790: Dispatch (dispatch.c:357)
==8647== by 0x14F549: main (main.c:298)
==8647== Address 0xf3383e8 is 24 bytes inside a block of size 152 free'd
==8647== at 0x4C2BA6C: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8647== by 0x2403DF: damageDestroyPixmap (damage.c:1549)
==8647== by 0x1FFD88: XvDestroyPixmap (xvmain.c:372)
==8647== by 0x1FE789: ShmDestroyPixmap (shm.c:273)
==8647== by 0x8507C24: _sna_dri_destroy_buffer (sna_dri.c:448)
==8647== by 0x289986: do_get_buffers (dri2.c:521)
==8647== by 0x289C0F: DRI2GetBuffersWithFormat (dri2.c:690)
==8647== by 0x28B68F: ProcDRI2Dispatch (dri2ext.c:306)
==8647== by 0x160A40: Dispatch (dispatch.c:428)
==8647== by 0x14F549: main (main.c:298)
==8647==
==8647== Invalid read of size 8
==8647== at 0x8477BCA: has_offload_slaves.isra.38 (regionstr.h:74)
==8647== by 0x84958E7: sna_accel_block_handler (sna_accel.c:13729)
==8647== by 0x164B13: BlockHandler (dixutils.c:387)
==8647== by 0x2B5273: WaitForSomething (WaitFor.c:210)
==8647== by 0x160790: Dispatch (dispatch.c:357)
==8647== by 0x14F549: main (main.c:298)
==8647== Address 0xdfdfdfdfdfdfdfe7 is not stack'd, malloc'd or (recently) free'd
Reported-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Merely hinting that it was preferred by using sse+387 was not enough
for GCC to emit the faster SSE2 code.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Otherwise we seem to confuse the poor little compiler. This should also
make it easier to use CPP to turn off blocks.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
If we choose not to migrate the damage to the GPU bo, then it will be
incoherent. This just flattens the logic out as priv->gpu_bo should be
NULL here anyway.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
We need to double check that the features we look for are supported by
the compiler before doing so.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Allow use of advanced ISA when available by detecting support at
runtime. This initial work just uses GCC to emit varying ISA, future
work could use hand written code for these hot spots.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The maximum size is determined by available RAM, if we exceed it we
greatly increase the risk of swap thrashing.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Thinking about the compositor <-> server <-> client inter-exchange
demonstrates that we cannot prevent the client rendering into the
source texture being show by the compositor. That is a subject for DRI3.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>