I have an AMD 5700XT gpu and I am trying to learn SYCL but I have a lot of doubts of the current state of AMD gpu driver stacks. According to what I read, there are several driver stacks for AMD gpus: mesa, amdgpu and amdgpu-pro. If I understand correctly, mesa has its own opencl implementation and there is another implementation for the amdgpu drivers.
Also, amd has ROCm, which its another OpenCL implementation, HIP, which something like CUDA and some tooling, right?
There is at least 2 implementations, ComputeCpp and hipSYCL, which could possibly run SYCL on AMD gpus. Shouldnt the clang implementation be able to run also on AMD gpus, as according to the image it runs with OpenCL and SPIR-V devices?
In I understand correctly, there is also oneAPI, which is an implementation of SYCL (DPC++) with some extensions (SYCL 2020) and some libraries on top of that SYCL implementation (kind of what cuBLAS or cuSPARSE are to CUDA). Should it be possible to run oneAPI libraries on top of another SYCL implementation?
Fonally, if I use mesa for graphics (OpenGL and Vulkan), is it possible to run ROCm on top of that? How does ROCm and OpenCL mesa implementation interact with mesa graphic drivers?
As you can see I have a big confusion about all the ecosystem. Can someone provide some light on it?