With WRITE bit, without INVALIDATE bit, for out-of-process
implementations, we have to append READ bit internally, and read out
the whole buffer range, send it to the js, so it can be written to
partially. Otherwise, how can you write back in unmap time? unless
you keep track of which elements in the buffer range have been written
to and which remain untouched.
For out-of-process implementations, using the invalidate bit makes a
huge per difference. for Map call, it doesn't have to wait for the
service side to return the buffer range, it can just allocate a buffer
and initialize to 0 and allow js to write to it. Otherwise, it's a
blocking call until service side responded with the readback buffer
data.