Texture functions TransferTexturesToGPU transfers texture image memory from CPU to GPU for given images. Transitions device image as destination, then to Shader read only source, for use in fragment shader texture sampling. The image Host.Offset *must* be accurate for the given buffer, whether its
(buff vk.Buffer, imgs ...*Image)
| 580 | // The image Host.Offset *must* be accurate for the given buffer, whether its own |
| 581 | // individual buffer or the shared memory-managed buffer. |
| 582 | func (mm *Memory) TransferTexturesToGPU(buff vk.Buffer, imgs ...*Image) { |
| 583 | if len(imgs) == 0 { |
| 584 | return |
| 585 | } |
| 586 | cmd := mm.CmdPool.NewBuffer(&mm.Device) |
| 587 | CmdBeginOneTime(cmd) |
| 588 | |
| 589 | for _, im := range imgs { |
| 590 | im.TransitionForDst(cmd, vk.PipelineStageTopOfPipeBit) |
| 591 | if im.IsHostOwner() { |
| 592 | cr := im.CopyRec() |
| 593 | vk.CmdCopyBufferToImage(cmd, im.Host.Buff, im.Image, vk.ImageLayoutTransferDstOptimal, 1, []vk.BufferImageCopy{cr}) |
| 594 | } else { |
| 595 | cr := im.CopyRec() |
| 596 | vk.CmdCopyBufferToImage(cmd, buff, im.Image, vk.ImageLayoutTransferDstOptimal, 1, []vk.BufferImageCopy{cr}) |
| 597 | } |
| 598 | im.TransitionDstToShader(cmd) |
| 599 | } |
| 600 | mm.CmdPool.EndSubmitWaitFree(&mm.Device) |
| 601 | } |
| 602 | |
| 603 | // TransferImagesFromGPU transfers image memory from GPU to CPU for given images. |
| 604 | // the image Host.Offset *must* be accurate for the given buffer, whether its own |
no test coverage detected