bd30f3619d
RGP requires shaders to be uploaded consecutively inside the same buffer object. Otherwise, either it makes the driver generating huge traces (ie. in GiB) or it fails to load traces at all. Hopefully, this will be improved soon when AMDGPU drivers will have GPL support. To workaround this, the driver relocates graphics shaders in the same buffer object when a pipeline is created. Then at draw time, it overwrites SPI_SHADER_PGM_xxx registers to make sure SQTT can match between emitted and exported shaders. It's a bit suboptimal because graphics shaders are uploaded twice but it's the best solution I found. This will allow to implement GPL caching without breaking capturing shaders with RGP. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21078>