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, 660 and 750 (postmerge nightly) using Piglit testing suite.
Testing done:
- CI pipeline: https://gitlab.freedesktop.org/dh/mesa/-/pipelines/1297196
- local testing with tinygrad on OnePlus 6 with Adreno 630 running Linux.
Pass: 4258, ExpectedFail: 17, 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 (closed)
Credits goes to @lumag @karolherbst @robclark
Edited by David Heidelberg