On Tue, Aug 15, 2017 at 4:24 AM, Christian König <deathsimple at vodafone.de> wrote: > Am 14.08.2017 um 17:31 schrieb Felix Kuehling: >> >> [SNIP] >> Repeating the same argument I made on another email: > > > Commented on that in the other mail, let's keep the discussion on this topic > there. > >>> BTW: What exactly this this good for? >> >> Scratch memory is private memory per work-item. It's used when a shader >> program has too few registers available. With HSA we use flat scratch >> addressing, where shaders can access private memory in a special scratch >> aperture using normal memory instructions. Using the same virtual >> address, each work item gets its own private piece of memory. The >> hardware does the address translation from the VA in the private >> aperture to a scratch-backing VA. The application is responsible for >> allocating the memory to back that scratch area, and to map it somewhere >> in its virtual address space. >> >> This ioctl tells the hardware (or HWS firmware) the VA of the scratch >> backing memory. > > > Ok, you've got me lost here. Not that I'm deeply into that stuff, but my > last status is that those apertures are global and not per/process or VMID. > > That would mean that when two processes try to set two different addresses > we are completely lost here. > The scratch and lds apertures are per vmid. See gfx_v8_0_init_compute_vmid() Alex