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=1Not required on GameHubActivate 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.