Hi
12 bit data is troublesome, since it can't be only handled by hardware, some software is involved, and the risk is the high sample rate (20MSPS).
SGPIO has parallel mode but only up to 8 bit, so for 12 bit, you must program 2 parallel groups, one for 8 bit, the other for the remaining 4 bit, and use another SGPIO pin to output sampling clock. A good news is up to 8 SGPIO shift registers (slices) can be concatenated to form a longer shift chain, so the data processing/transfer rate is 20M / 32 = 625kHz. Also note that you need uint16_t to store one sample, so data rate is 40MB/s.
Another risk is GPDMA performance, GPDMA typically needs 16 clocks to transfer one data unit, so it could be bottleneck.
A possible approach is to use Cortex-M0 core to handle all the SGPIO driver and data transfer, and use pooling mode instead of IRQ mode (polling for shift complete flag). I think this may applicable because there is an LPC4300 based toy named as "pixy", which uses Cortex-M0 + SGPIO to read camera data (1280x800) and doing computer vision on M4, the data rate is at least 1280*800*2*30= 60MB/s. But it does not involve bit-field operation, so there could be risk.
Regards
Vicente Gomez