Files
RetroArch/cheevos
LibretroAdmin 31afb648d3 gfx_display: restore menu texture mip-mapping behind an explicit setting
Fixes #19095 (UI icons pixelated when scaled, regression between the
2026-04-10 and 2026-06-06 nightlies).

Commit 92ab698f changed 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 motivated 92ab698f.

- 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.
2026-07-10 16:25:01 +02:00
..
2026-01-24 14:30:22 +01:00
2026-05-01 10:01:04 +02:00
2026-06-25 09:47:38 +02:00
2026-02-28 13:18:34 +01:00