mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-10 03:21:30 -10:00
Fixes #19095 (UI icons pixelated when scaled, regression between the 2026-04-10 and 2026-06-06 nightlies). Commit92ab698fchanged every menu/UI texture upload from TEXTURE_FILTER_MIPMAP_LINEAR to TEXTURE_FILTER_LINEAR (icons, thumbnails, wallpapers, widget textures) to save VRAM and avoid the per-texture mip generation dispatch on D3D12. Without mip levels, bilinear minification samples at most 4 texels, so any icon drawn below its native 256px resolution aliases -- exactly the pixelation reported. Resolution: - New 'Settings > User Interface > Appearance > Mip-Mapping' bool (config key 'menu_texture_mipmapping', default ON), added through the single-source settings def system. Default ON restores the pre-April rendering quality; turning it OFF recovers the VRAM / upload-cost savings that motivated92ab698f. - New gfx_display_texture_filter() helper returns TEXTURE_FILTER_MIPMAP_LINEAR or TEXTURE_FILTER_LINEAR from the setting. All UI image upload sites now route through it: the async icon upload callback (cb_task_icon_load), the synchronous gfx_display_load_icon path, static thumbnail uploads, XMB / Ozone / MaterialUI context-reset textures and wallpapers, the AI service overlay, the screenshot and load-content-animation widgets, and cheevos badges (previously hard-coded to mip-mapped, now honoring the toggle for consistency). - Animated thumbnail frame re-uploads intentionally stay plain linear regardless of the setting, to avoid regenerating mip chains every frame. - The setting carries SD_FLAG_CMD_APPLY_AUTO + CMD_EVENT_REINIT (same mechanism as the icon theme setting), so toggling it re-uploads all textures immediately. Verified: full build clean, strict C89 syntax pass on all touched .c files, headless boot round-trips 'menu_texture_mipmapping = "true"' through the config.