Yes, and you need to make sure that the upload has completed before you reuse the pixel buffer too.
And the synchronization API isn't very awesome, it can only wait for all operations until a certain point have been completed. You can't easily track individual transfers.
I haven't tried it yet, but will try soon for my open-source metaverse Substrata: https://substrata.info/.