Fix performance issue when enlightenment started.

Change some logic in ARMSOCDRI2ScheduleSwap(). If src and dst has
same size and they are both no-framebuffer with compositor enabled,
we only need to exchange buffers between src and dst pixmap.

Change-Id: Iba0b3e248589bc8d05f5b52cfb12865790d812a3
Add another check for DRI2_EXCHANGE_COMPLETE

As upstream moved things around, the previous patch didn't cover all the
cases where ARMSOCDRI2SwapComplete checks cmd->type. Fix the remaining
code-path.
Make canexchange more specific

Apart from checking whether the buffer objects matches size/depth/etc also
check the clipList to ensure the exchange doesn't destroy content not
belonging to the drawable.
Report damage for drawable in ARMSOCDRI2ScheduleSwap

Based on chromeos xf86-video-armsoc commit
https://chromium.googlesource.com/chromiumos/third_party/xf86-video-armsoc/+/81e3f9f

Change-Id: Idd7b9df652e26167a14ffff3ddf3156b726bbc88

Conflicts:
	src/armsoc_dri2.c
Only proces damage when needed

The previous upstream commit always sent out a damage event even if the
method for swapping itself triggers damage (e.g. CopyArea or flips).
Instead only do explicit damage processing in the exchange path.
Fix refcounting when exchanging buffers

When exchanging buffers the old bo associated to a buffer might not
be the same as the new one (e.g. after a resize). So save the old
buffer pointers in ScheduleSwap to match them with the unreference calls
in SwapComplete

This match the approach taken in the upstream armsoc driver.
Merge pull request #8 from sjoerd-ccu/r4p0-umplock+exchange

R4p0 umplock+exchange