The value of the AFBC_FEATURES register is required by userspace to determine AFBC support on Bifrost. A user on our IRC channel (#panfrost) reported a workload that raised a fault on one system's Mali G31 but worked flawlessly with another system's Mali G31. We determined the cause to be missing AFBC support on one vendor's Mali implementation -- it turns out AFBC is optional on Bifrost! Whether AFBC is supported or not is exposed in the AFBC_FEATURES register on Bifrost, which reads back as 0 on Midgard. A zero value indicates AFBC is fully supported, provided the architecture itself supports AFBC, allowing backwards-compatibility with Midgard. Bits 0 and 15 indicate that AFBC support is absent for texturing and rendering respectively. The user experiencing the fault reports that AFBC_FEATURES reads back 0x10001 on their system, confirming the architectural lack of AFBC. Userspace needs this parameter to know to disable AFBC on that chip, and perhaps others. v2: Fix typo from copy-paste fail. v3: Bump the UABI version. This commit was cherry-picked from another series so chalking this up to a rebase fail.
Showing the changes to include/uapi (1 of 5 files). Show all
Unified · Split
| @@ -171,6 +171,7 @@ enum drm_panfrost_param { · 170 unmodified lines | |||
| 171 | DRM_PANFROST_PARAM_JS_FEATURES15, | 171 | DRM_PANFROST_PARAM_JS_FEATURES15, |
| 172 | DRM_PANFROST_PARAM_NR_CORE_GROUPS, | 172 | DRM_PANFROST_PARAM_NR_CORE_GROUPS, |
| 173 | DRM_PANFROST_PARAM_THREAD_TLS_ALLOC, | 173 | DRM_PANFROST_PARAM_THREAD_TLS_ALLOC, |
| 174 | DRM_PANFROST_PARAM_AFBC_FEATURES, | ||
| 174 | }; | 175 | }; |
| 175 | 176 | ||
| 176 | struct drm_panfrost_get_param { | 177 | struct drm_panfrost_get_param { |