Current implementation of RHI::Buffer and RHI::Texture classes incapsulates staging buffer functionality required for transferring data from CPU to GPU on NUMA systems. It would be more flexible to split this functionality to so called RHI::StagingBuffer used specifically as an intermediate CPU & GPU accessible data storage used for transferring data to GPU dedicated resources, like RHI::Buffer and RHI::Texture. RHI::StagingBuffer should be derived from RHI::Buffer and extend it with logic for storing intermediate data of multiple GPU resources intended for initialization using RHI::TransferCommandList.
Current implementation of
RHI::BufferandRHI::Textureclasses incapsulates staging buffer functionality required for transferring data from CPU to GPU on NUMA systems. It would be more flexible to split this functionality to so calledRHI::StagingBufferused specifically as an intermediate CPU & GPU accessible data storage used for transferring data to GPU dedicated resources, likeRHI::BufferandRHI::Texture.RHI::StagingBuffershould be derived fromRHI::Bufferand extend it with logic for storing intermediate data of multiple GPU resources intended for initialization usingRHI::TransferCommandList.