freedreno: support OpenCL via rusticl
Prerequisites (for applying on top of the 24.2 release):
- clear_buffer implementation: !30284 (merged)
- compute_state_info impl.: !30616 (merged)
- ir3 NIR improvements for wide load/store: !30961 (merged)
- disallow half-reg for mad.x24 !31334 (merged)
Why?
OpenCL is the only compute standard we can rely on in the Linux world being available across different architectures and platforms for this moment. It's widely used by image processing software, Large Language Models (LLM), Translators, and many other workloads.
What does this MR do?
- Enables Rusticl support for freedreno.
- Bring testing CI job for Adreno 618, and 630 (postmerge nightly) using Piglit testing suite.
Testing done:
- CI pipeline: https://gitlab.freedesktop.org/dh/mesa/-/pipelines/1259600 (updated one with Karol suggestions)
- local testing with tinygrad on OnePlus 6 with Adreno 630 running Linux.
Pass: 4250, ExpectedFail: 15, Skip: 84 # 1 freedreno-specific fail only
I benchmarked the OpenCL performance here (the performance may differ over time, but CPU utilization is less likely): !25840 (comment 2196699)
Original MR by @lumag : !25840
Thanks to @lumag @karolherbst @robclark
Edited by David Heidelberg