MCPcopy Create free account
hub / github.com/cogentcore/core / TransferTexturesToGPU

Method TransferTexturesToGPU

vgpu/memory.go:582–601  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

580// The image Host.Offset *must* be accurate for the given buffer, whether its own
581// individual buffer or the shared memory-managed buffer.
582func (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

Callers 2

SyncValuesTexturesMethod · 0.95

Calls 7

CmdBeginOneTimeFunction · 0.85
TransitionForDstMethod · 0.80
IsHostOwnerMethod · 0.80
CopyRecMethod · 0.80
TransitionDstToShaderMethod · 0.80
EndSubmitWaitFreeMethod · 0.80
NewBufferMethod · 0.45

Tested by

no test coverage detected