github whitebelyash/freedreno_turnip-CI tu_vgralloc-exp
Turnip A8XX vgralloc-exp

latest releases: mesa_v26.1.0-git_3, mesa_v26.1.0-git-hotfix, mesa_v26.1.0-git_2...
one month ago

A8XX Turnip Vulkan Vgralloc-exp (V14)

Supports following GPUs:

  • Adreno 825 (tested, working with minor glitches compared to A830) - GMEM/sysmem
  • Adreno 830 (tested, working) - sysmem-only - gmem causes GPU hangs
  • Adreno 840 (tested, working) - GMEM/sysmem
    Following GPUs were added but no proper testing was done:
  • Adreno 810 (had blackscreen as I assumed it's duo-slice, now the rendering should work, but I'm not sure)
  • Adreno 829 (no testers were found)

GPUs other than 830/840 can have reduced performance and/or more glitches. Can't do anything about that, sorry!

Files:

  • gen8-hacks - main branch (upstream MR + hacks applied)
  • gen8-yuck - branch with some commits reverted to gain back perf in RDR2. Probably useless at this point

Settings:

  • Disable DXVK_HUD
  • Enable swapchain blit path to workaround corrupted image on Android: WRAPPER_BLIT=1 Not required on GameHub
  • Activate sysmem on A830 - everything will hang/crash/etc without: TU_DEBUG=sysmem. Not required on A840/A825
    Now disabled automatically
  • If too unstable - activate nolrz: TU_DEBUG=nolrz.

Changes:

  • Added a workaround to fix u_gralloc skipping setting drm format modifier type - all weird pixel artifacts without WRAPPER_BLIT=1 should be gone now!

More info:
Fallback gralloc implementation in Mesa has this check to set proper drm format modifier for ubwc/nonubwc swapchain images (ubwc is a Qualcomm compression):

   if (hnd->handle->numInts >= 2 && hnd->handle->data[hnd->handle->numFds] == gmsm) {
      /* This UBWC flag was introduced in a5xx. */
      bool ubwc = hnd->handle->data[hnd->handle->numFds + 1] & 0x08000000;
      out->modifier = ubwc ? DRM_FORMAT_MOD_QCOM_COMPRESSED : DRM_FORMAT_MOD_LINEAR;
   }

Looks like a8xx changed something here thus this condition fails and drm format isn't being set at all. This was the reason of garbled output in most native Vulkan apps.
Removing the check is enough to overcome this issue.

Don't miss a new freedreno_turnip-CI release

NewReleases is sending notifications on new releases.