Hi everyone,
I've a few questions about DRI2 and GPGPU on R600 hardware. (I hope this is the right place for this post)
How is the synchronization of multiple access to the hardware handled?
I think I read that there was a global lock in DRI-1 for hardware access.
But if this is the case, what happens if one process, holding the lock, doesn't release it?
How does it work in a DRI-2 environment?
Is it possible that shaders from multiple users are running at the same time?
How is the hardware-context managed for multiple users?
By hardware-context I mean (registers, memory ...).
Every gpu-user has it's own state (for example different values in the PGM_START_* registers on R600 ...).
Could a shader-program access data (textures, ...) from a different gpu-user?
As far as I know, there is no OSS for GPGPU (at least on radeon hw) available.
What would be necessary to do GPGPU on r600 radeon hw?
** how does this work?
Apart from communicating with the kernel (via libdrm) is there a need to work with mesa, x-server, glx ...?
Sidenote:
I've tried to read some mesa-code of the radeon-driver, but it confused me a bit (chip-specific- and general-code. dri-1, dri-2, glx, classic-mesa vs. gallium, winsys ...).
Is there somewhere a documentation of the mesa-code?
Btw: Thanks to the phoronix.com guys for their work - I follow the articles/news of phoronix regularly.
I've a few questions about DRI2 and GPGPU on R600 hardware. (I hope this is the right place for this post)
How is the synchronization of multiple access to the hardware handled?
I think I read that there was a global lock in DRI-1 for hardware access.
But if this is the case, what happens if one process, holding the lock, doesn't release it?
How does it work in a DRI-2 environment?
Is it possible that shaders from multiple users are running at the same time?
How is the hardware-context managed for multiple users?
By hardware-context I mean (registers, memory ...).
Every gpu-user has it's own state (for example different values in the PGM_START_* registers on R600 ...).
Could a shader-program access data (textures, ...) from a different gpu-user?
As far as I know, there is no OSS for GPGPU (at least on radeon hw) available.
What would be necessary to do GPGPU on r600 radeon hw?
- generate a device-specific shader program (using texture-instructions for input and output data?)
- upload the shader-program and the data to the GPU using buffer-objects (via TTM/libdrm?) **
- creating gpu-commands which initialize the hw (setting PGM_START_* for example) - and upload them via libdrm **
- starting one or multiple instances of my shader-program with parameters (parameters -> because each instance should calculate something different) **
- waiting for completion **
- mapping the results in the process's address space and access the output.
- release all buffers.
** how does this work?
Apart from communicating with the kernel (via libdrm) is there a need to work with mesa, x-server, glx ...?
Sidenote:
I've tried to read some mesa-code of the radeon-driver, but it confused me a bit (chip-specific- and general-code. dri-1, dri-2, glx, classic-mesa vs. gallium, winsys ...).
Is there somewhere a documentation of the mesa-code?
Btw: Thanks to the phoronix.com guys for their work - I follow the articles/news of phoronix regularly.
Comment