TransferRegsFromGPU transfers memory from GPU to CPU for given regions, using a one-time memory command buffer. All buffs must be of the same type.
(regs []MemReg)
| 427 | // using a one-time memory command buffer. |
| 428 | // All buffs must be of the same type. |
| 429 | func (mm *Memory) TransferRegsFromGPU(regs []MemReg) { |
| 430 | if len(regs) == 0 { |
| 431 | return |
| 432 | } |
| 433 | bt := regs[0].BuffType |
| 434 | if bt == StorageBuff { |
| 435 | mm.TransferStorageRegsFromGPU(regs) |
| 436 | return |
| 437 | } |
| 438 | buff := mm.Buffs[bt] |
| 439 | if buff.Size == 0 || buff.DevMem == vk.NullDeviceMemory { |
| 440 | return |
| 441 | } |
| 442 | cmd := mm.CmdPool.NewBuffer(&mm.Device) |
| 443 | mm.CmdPool.BeginCmdOneTime() |
| 444 | mm.CmdTransferRegsFromGPU(cmd, buff, regs) |
| 445 | mm.CmdPool.EndSubmitWaitFree(&mm.Device) |
| 446 | } |
| 447 | |
| 448 | // CmdTransferRegsToGPU transfers memory from CPU to GPU for given regions |
| 449 | // by recording command to given buffer. |
no test coverage detected