Need for CPU-GPU sync if write and read happens on different memory pages of MTLBuffer?

236 Views Asked by At

I am using an MTLBuffer in Metal that I created by allocating several memory pages (using vm_allocate) with

device.makeBuffer(bytesNoCopy:length:options:deallocator:).

I write the buffer with CPU and the GPU only reads it. I know that generally I need to synchronise between CPU and GPU.

However, I have more knowledge about where in the MTLBuffer write (by CPU) and read (by GPU) happens and in my case writing is into different memory pages than the read (in a given time interval).

My question: Do I need to sync between CPU and GPU even if the relevant data that is written and read are on different memory pages (but in the same MTLBuffer)? Intuitively, I would think not, but then MTLBuffer is a bit opaque and I don't really know what kind of processing/requirement the GPU actually does/has with the MTLBuffer.

Additional info: This is a question for iOS and MTLStorageMode is shared.

Thank you very much for help!

1

There are 1 best solutions below

1
NateSummersXMan On

Assuming the buffer was created with MTLStorageModeManaged, you can use the function didModifyRange to sync CPU to GPU for only a portion (a page for example) of the buffer.