Minecraft 26.3 (Prism) : icônes d’items transparentes
Icônes d'items transparentes dans Minecraft 26.3 sous Prism Launcher : la piste de l'atlas, la fausse piste GPU et la vraie cause, SDL sur XWayland.
Aussi disponible en English
Minecraft 26.3, lancé depuis Prism Launcher sur Linux : à l’ouverture de l’inventaire créatif, une partie des icônes d’items est transparente. Les items sont bien là (on peut les prendre), mais on ne voit rien. Voici comment j’ai fini par trouver, et pourquoi la bonne piste n’était pas la première.
Le symptôme
Instance : ~/.local/share/PrismLauncher/instances/26.3/minecraft. Écran 5120x2880 en plein écran, guiScale:3. Dans logs/latest.log, à l’ouverture de l’inventaire créatif :
Too many items (64) in UI, some will be skipped! (Reached maximum texture size 512x512)Un petit dépannage en jeu existe : F3+T (recharger les packs) fait revenir les icônes, jusqu’à la prochaine fois.
Première piste : l’atlas d’icônes
Les icônes d’items de l’interface sont dessinées dans un atlas plafonné à 512x512 px. Si tout ne rentre pas, les items en trop sont ignorés : icône transparente. Ça ne dépend pas du resource pack, et avec un écran 5120x2880 en guiScale:3, les icônes sont grandes, donc l’atlas se remplit vite.
Mon hypothèse de calcul (non confirmée) : une icône fait 16 px x guiScale, donc un atlas de 512x512 contient 64 icônes à guiScale:4 (64 px), environ 100 à 3 et 256 à 2. Ça colle avec les logs : le message est apparu le 21 (14:07, 66 items) et le 22 (22:30:53, 64 items).
Test : guiScale:2 améliore les choses, mais l’interface devient trop petite. Un contournement, pas une solution.
Fausse piste : le driver et le noyau
- Noyau
7.2.11-imac5kstitch,amdgpuOK. - OpenGL fonctionne sur le système :
eglinfoen Wayland donne radeonsi pitcairn, GL 4.6, etglxinfosous XWayland est accéléré.
Mais dans Minecraft, avant même la création de la fenêtre :
GlBackend.loadLibrary ... Could not retrieve OpenGL functionsLe jeu retombe alors sur Vulkan (RADV PITCAIRN, Mesa 25.0.7), et ça fonctionne. Les messages Requested swapchain extent ... not within allowed extent ne sont que le redimensionnement du plein écran sous XWayland, sans gravité.
Le vrai problème : SDL retombe sur XWayland
J’avais essayé de forcer OpenGL avec preferredGraphicsBackend:"default" dans options.txt (jeu fermé, sinon il réécrit le fichier). OpenGL échouait toujours avec la même erreur et le jeu repartait sur Vulkan : ce test n’avait donc jamais vraiment eu lieu.
La cause : SDL retombait sur XWayland, parce que mon compositeur n’a pas fifo-v1. La correction est une variable d’environnement dans l’instance Prism (Paramètres de l’instance, variables d’environnement, avec OverrideEnv=true) :
SDL_VIDEO_DRIVER=waylandRésultat
Test du 23 octobre à 10h25 : OpenGL 4.6 radeonsi pitcairn, fenêtre SDL en wayland, guiScale:3, monde solo. Plus de souci d’icônes et plus de Too many items.
Ce qui reste à vérifier : sur le serveur, avec plus d’items (créatif en multi), quand il sera de nouveau en ligne. Si l’avertissement revient, il faudra voir s’il vient du serveur ou du backend. En attendant, mon avis : le vrai coupable était le repli sur XWayland, pas la taille de l’atlas.
À retenir
- Si OpenGL échoue dans Minecraft alors que
eglinfoetglxinfofonctionnent, regarde quel backend SDL utilise vraiment. - Sous un compositeur Wayland sans
fifo-v1, SDL peut retomber sur XWayland.SDL_VIDEO_DRIVER=waylanddans l’environnement de l’instance Prism règle le problème. - Un test n’a de valeur que si on a vérifié qu’il teste bien ce qu’on croit (ici, le « test OpenGL » tournait en fait sur Vulkan).