OpenGL context sharing vs. PBO


I’m optimizing an engine where the texture uploads are done on the main render thread which brings performance penalties as the textures are quite large. I have two variants on the table on how to solve this:

Shared OpenGL context which is used by a secondary thread to create and upload textures which are then shared with the main render thread context.

Staying with one context and using PBOs with buffer mappings which are then written to from a separate thread.

I have doubts about context sharing as they are traditionally known to be performance heavy and are not implemented well on many drivers.

Can you name me an example where creating a texture the traditional way on a shared context and using it in the main render context can lead to trouble and why?