This series applies some refactoring to the command decoding:
- replace the switch on the command ID with a call table. Chances that some of the decode functions are actually inlined are rather low so that forcing a function call by using a call table should not add overhead, and removing the switch in favour of the call table might reduce some overhead.
- pass a buffer pointer relative to the current command to be decoded to avoid the double pointer dereference that is involved there in the subsequent decode calls.
- reduce the number of calculations done in the decoding loop.
With these changes the benchmark Unigine Heaven goes from 48.6 fps to 51.8 fps (always taking the second run, resolution 1024x768). Other benchmarks (Unigine Heaven, running Stellaris trace in benchmark mode) don't change in a notable way though.