I am currently writing a driver for the Intel ARC GPU series (specifically I use the A750 for testing purposes) for my own operating system.
I am already able to execute compute kernels that use bindless parameters, but as soon as I execute a kernel that accesses a bound untyped surface (surface type: BUFFER, surface format: RAW, surface pitch: 0 (1 byte), accessing send instruction: untyped surface read with x), the GPU hangs (probably because of a fault).
I have already checked the following things:
- When I don't map the surface in the PPGTT, I get a pagefault. When I map it, I don't get one, hinting that binding table and at least part of the surface state is working.
- The hang occurs even if I set all offsets in the send instructions payload to 0 and set the surface size to 0xFFFFFFFF, so I don't think the surface bounds check fails.
- All addresses are 64KB aligned (for now), so aligning issues should not be a problem
I hope anybody has any idea what the cause of the hang could be, because I am running out of ideas on what to test.