In this paper, we experimentally demonstrate a real-time software defined multiple input multiple output (MIMO) visible light communication (VLC) system employing link adaptation of spatial multiplexing and spatial diversity. Real-time MIMO signal processing is implemented by using the Field Programmable Gate Array (FPGA) based Universal Software Radio Peripheral (USRP) devices. Software defined implantation of MIMO VLC can assist in enabling an adaptive and reconfigurable communication system without hardware changes. We measured the error vector magnitude (EVM), bit error rate (BER) and spectral efficiency performance for single carrier M-QAM MIMO VLC using spatial diversity and spatial multiplexing. Results show that spatial diversity MIMO VLC improves error performance at the cost of spectral efficiency that spatial multiplexing should enhance. We propose the adaptive MIMO solution that both modulation schema and MIMO schema are dynamically adapted to the changing channel conditions for enhancing the error performance and spectral efficiency. The average error-free spectral efficiency of adaptive 2x2 MIMO VLC achieved 12 b/s/Hz over 2 meters indoor dynamic transmission.