History

drm/panfrost: Add AFBC_FEATURES parameter

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.

Alyssa Rosenzweig committed 5 years ago

Commit 3e2926f1 parent cb1c8145 files · +7 −1Browse files

Showing the changes to include/uapi (1 of 5 files). Show all

Unified · Split

include/uapi/drm/panfrost_drm.h+1−0
@@ -171,6 +171,7 @@ enum drm_panfrost_param { · 170 unmodified lines
171171 DRM_PANFROST_PARAM_JS_FEATURES15,
172172 DRM_PANFROST_PARAM_NR_CORE_GROUPS,
173173 DRM_PANFROST_PARAM_THREAD_TLS_ALLOC,
174+ DRM_PANFROST_PARAM_AFBC_FEATURES,
174175 };
175176
176177 struct drm_panfrost_get_param {