It is a WebGPU limitation that mappable buffers can't have any other usages. (The spec mentions this clearly.)
Currently in Slang-RHI, if a buffer with MemoryType::Upload is created then this constraint will be violated and buffer creation just fails.