Yea, I really really don't like this either. I landed on doing it this way because I figured it would be easiest to implement across the board.

I don't think that keeping m_pixels around is safe universally. My fear was that some implementations (especially those that can provide mapped pointers to physical locations) could cause m_texture to be invalidated after upload.

Though I suppose we could add an option in CTexture for whether it should be kept around if not, then the implementations could decide?