Changelog:

Fix setting change crash with thread off (Stenzek)
f7d7eec: GPU/TextureCache: Fix replacements starting in second page (Stenzek)
e34d23c FullscreenUI: Implicitly close non-multichoice dialogs
7cc4755 FullscreenUI: Fix parent scroll resetting on directory change
f98b904 FullscreenUI: Add ‘Set Cover Image’ to game list
b982260 FullscreenUI: Show game icons in game list
1481c1d System: Post-processing is shut down on GPU thread
e41f179 PostProcessing: Fix erroneous reload message
08d2586 System: Allow host to set async worker count
8f19ac2 System: Set rapidyaml error handlers on startup
d52bf79 GPU: Split backend into Backend+Presenter
6cba825 System: Add fatal error shutdown path
dd97882 GPU: Refactor display presentation workflow
da13579 GPU: Align presenter/backends to cache line
609fa5c GPUDevice: Add sampler cache to base class
338d29d GPUDevice: Move empty/null texture to base class
d589696 PostProcessing: Get rid of GPU-dependent globals
e0a9bbe PostProcessing: Move into GPU presenter
313f653 Data: Add one example overlay
7fcf0a3 README: Update feature list for 2025
d62261e GPUDevice: Allow nested GL_SCOPE macros
88b4337 GPUDevice: Replace explicit GL_PUSH/GL_POP with nested GL_SCOPE
6131ddb GPU: Fill in unused/padded area in overlays
725dcea GPU: Fix crash toggling border overlays
e1cbb50 GPU: Fix various capture/screenshot issues
9b8d2a8 System: Required changes for Android
9fdeeb3 GPU: Add alpha blending support to overlay
ade8bf7 GPU: Fix overlay+postprocessing combination
8c5c0e6 Common: Fix Vector2->Vector4 zero-extend constructor
7905793 GPU: Use screen alignment for overlay instead of display rect
21b167d CDImage: Tidy up Open() method
c03b6f3 Misc: Replace isspace() usage with StringUtil::IsWhitespace()
7c2488c PostProcessing/GLSL: Fix image moved off-screen with alignment
f219b47 FullscreenUI: Use constant width/height scale on Android
cc0ccf2 Data: Update resources
78902d7 FullscreenUI: Fix several more unsafe reads
4b20fc6 Path: Fix several errors in URLEncode/Decode and add tests
17b0da7 GameList: URL encode custom properties paths with brackets
9d4789e FullscreenUI: Fix blank screen flicker starting game
389276b GPUDevice: Normalize supports_texture_buffers => texture_buffers
fb3e290 GPUDevice: Move exclusive fullscreen to features
9c4b211 GPU: Fix incorrect screen draw rect
080eccd GPUThread: Shutdown instead of panicing on switch failure
19ca9cb GPU/HW: Use texture loads for native resolution
78f6e11 GPUThread: Skip debug window update on Android
4e588bb GPU: Fix incorrect interface for postfx config
af58740 System: Always display OSD warning messages
be75a97 GPUDevice: Fix swap chain clear colour normalization
0166939 PostProcessing/GLSL: Clear alpha to 1.0
0129679 GPU: Reduce overdraw when using overlays
8eaa1f3 GPU: Fix overlay destination alpha with postfx
f045a17 GPUThread: Fix order of updating state
89504b0 GPUThread: Push settings through FIFO
d395be0 Qt: Fix global setting showing incorrectly for int-list
b08ab9f Qt: Fix border overlay export button
9113a6e Qt: Add ‘Multiple Devices’ to automatic mapping
df88227 GPU/HW: Further tweaks to replacement alpha handling
4da1f61 System: Simplify CD speedup warnings
13c7b85 GPUThread: Fix starting big picture mode
807094d Atualização Português do Brasil (#3357)
dc5f85a System: Display safe mode warning when toggling on
9096402 GameDB: Rakugaki Showtime does not support analog mode (#3358)
9666abc FullscreenUI: Hook up to disc change hotkey

Atualizações:

Fix crash de mudança de configuração com thread desativado (Stenzek)
f7d7eec: GPU/TextureCache: Corrigir substituições iniciando na segunda página (Stenzek)
e34d23c: FullscreenUI: Fechar implicitamente diálogos não-multichoice
7cc4755: FullscreenUI: Corrigir reset de rolagem do pai ao mudar de diretório
f98b904: FullscreenUI: Adicionar ‘Definir Imagem de Capa’ à lista de jogos
b982260: FullscreenUI: Exibir ícones de jogos na lista de jogos
1481c1d: Sistema: Pós-processamento é desligado na thread da GPU
e41f179: Pós-processamento: Corrigir mensagem de recarga errônea
08d2586: Sistema: Permitir que o host defina a contagem de trabalhadores assíncronos
8f19ac2: Sistema: Definir manipuladores de erro do rapidyaml na inicialização
d52bf79: GPU: Dividir backend em Backend+Presenter
6cba825: Sistema: Adicionar caminho de desligamento por erro fatal
dd97882: GPU: Refatorar fluxo de apresentação da tela
da13579: GPU: Alinhar presenter/backend à linha de cache
609fa5c: GPUDevice: Adicionar cache de sampler à classe base
338d29d: GPUDevice: Mover textura vazia/nula para a classe base
d589696: Pós-processamento: Eliminar globais dependentes da GPU
e0a9bbe: Pós-processamento: Mover para o GPU presenter
313f653: Dados: Adicionar um exemplo de sobreposição
7fcf0a3: README: Atualizar lista de recursos para 2025
d62261e: GPUDevice: Permitir macros GL_SCOPE aninhadas
88b4337: GPUDevice: Substituir GL_PUSH/GL_POP explícitos por GL_SCOPE aninhados
6131ddb: GPU: Preencher área não usada/padronizada em sobreposições
725dcea: GPU: Corrigir crash ao alternar sobreposições de borda
e1cbb50: GPU: Corrigir vários problemas de captura/screenshots
9b8d2a8: Sistema: Mudanças necessárias para Android
9fdeeb3: GPU: Adicionar suporte a blendagem alfa em sobreposição
ade8bf7: GPU: Corrigir combinação de sobreposição e pós-processamento
8c5c0e6: Comum: Corrigir construtor de extensão zero de Vector2 para Vector4
7905793: GPU: Usar alinhamento de tela para sobreposição em vez de retângulo de exibição
21b167d: CDImage: Organizar método Open()
c03b6f3: Misc: Substituir uso de isspace() por StringUtil::IsWhitespace()
7c2488c: Pós-processamento/GLSL: Corrigir imagem movida para fora da tela com alinhamento
f219b47: FullscreenUI: Usar escala constante de largura/altura no Android
cc0ccf2: Dados: Atualizar recursos
78902d7: FullscreenUI: Corrigir várias leituras inseguras
4b20fc6: Caminho: Corrigir erros em URLEncode/Decode e adicionar testes
17b0da7: GameList: Codificar URL de caminhos de propriedades personalizadas com colchetes
9d4789e: FullscreenUI: Corrigir flicker de tela em branco ao iniciar o jogo
389276b: GPUDevice: Normalizar supports_texture_buffers => texture_buffers
fb3e290: GPUDevice: Mover fullscreen exclusivo para recursos
9c4b211: GPU: Corrigir retângulo de desenho de tela incorreto
080eccd: GPUThread: Desligar em vez de panicar em falha de troca
19ca9cb: GPU/HW: Usar cargas de textura para resolução nativa
78f6e11: GPUThread: Pular atualização de janela de depuração no Android
4e588bb: GPU: Corrigir interface incorreta para configuração de postfx
af58740: Sistema: Sempre exibir mensagens de aviso OSD
be75a97: GPUDevice: Corrigir normalização de cor de fundo da cadeia de troca
0166939: Pós-processamento/GLSL: Limpar alfa para 1.0
0129679: GPU: Reduzir sobrecarga ao usar sobreposições
8eaa1f3: GPU: Corrigir alfa de destino de sobreposição com postfx
f045a17: GPUThread: Corrigir ordem de atualização de estado
89504b0: GPUThread: Empurrar configurações através de FIFO
d395be0: Qt: Corrigir configuração global mostrando incorretamente para lista de inteiros
b08ab9f: Qt: Corrigir botão de exportação de sobreposição de borda
9113a6e: Qt: Adicionar ‘Dispositivos Múltiplos’ ao mapeamento automático
df88227: GPU/HW: Mais ajustes no tratamento de substituição de alfa
4da1f61: Sistema: Simplificar avisos de aceleração de CD
13c7b85: GPUThread: Corrigir modo de grande imagem inicial
807094d: Atualização Português do Brasil (#3357)
dc5f85a: Sistema: Exibir mensagem de aviso em modo seguro ao alternar para ele
9096402: GameDB: Rakugaki Showtime não suporta modo analógico (#3358)
9666abc: FullscreenUI: Conectar à tecla de atalho de troca de disco