I needed to transmit the data of the rendered image by socket. Therefore I used numpy to convert the bgl.Buffer into a numpy array.
The function numpy.asarray(bufferObject) will access the buffer protocol if the given object implements that. Without the buffer protocol, the to_list() function will get triggered.
Using the to_list() function I had a performance of 0.5fps since an humongous array needs to get copied. With the buffer protocol, I have a speed up by at least 60x (>30fps).
I tried to stick to the conventions used for the IDProperty which implements the buffer protocl as well.