Changelog:

Important Notes
Compatibility Reminder: Versions 2.0.0 and newer are not compatible with v1 of Xenia Manager. If you’re updating from v1, please perform a full fresh reinstall.
New Features & Improvements
Readded Ability to Customize Default Configuration Files (#252)
Xenia Settings Improvements (#241)
Updated readback_resolve setting
Improved optimizing settings – Before applying the setting it checks if the setting exists in the configuration file
Bug Fixes
Custom Internal Resolution Display Fix (#242)
Fixed an issue where the custom internal resolution was incorrectly displayed on the first launch of Xenia Settings.
Chores & Refactoring
Refactored Xenia Updater/Installer (#251)
Overhauled the updater/installer system to improve reliability, maintainability, and overall performance.
[Vulkan] Shader memory export (#145)
[GPU] Fix gamma ramp writing after RegisterFile API change (#2262)
[SPIR-V] Use a helper class for most if/else branching
Simplifies emission of the blocks themselves (including inserting blocks
into the function’s block list in the correct order), as well as phi after
the branching.
Also fixes 64bpp storing with blending in the fragment shader interlock
render backend implementation (had a typo that caused the high 32 bits to
overwrite the low ones).
[GPU] Check memexport stream constant upper bits in range gathering
[Base/GPU] Cleanup float comparisons and NaN and -0 in clamping
C++ relational operators are supposed to raise FE_INVALID if an argument is
NaN, use std::isless/greater[equal] instead where they were easy to locate
(though there are other places possibly, mostly min/max and clamp usage was
checked).
Also fixes a copy-paste error making the CPU shader interpreter execute
MINs as MAXs instead.
[Base] Relax the system clock difference allowance in the test
Hopefully should reduce the CI failure rate, although this testing
approach is fundamentally flawed as it depends on OS scheduling.
[Vulkan] Optional functionality usage improvements
Functional changes:
Enable only actually used features, as drivers may take more optimal
paths when certain features are disabled.
Support VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE.
Fix the separateStencilMaskRef check doing the opposite.
Support shaderRoundingModeRTEFloat32.
Fix vkGetDeviceBufferMemoryRequirements pointer not passed to the Vulkan
Memory Allocator.
Stylistic changes:
Move all device extensions, properties and features to one structure,
especially simplifying portability subset feature checks, and also making
it easier to request new extension functionality in the future.
Remove extension suffixes from usage of promoted extensions.
[VFS] Fixed invalid month decoding in decode_fat_timestamp
[CPU] Added constant propagation pass for: OPCODE_AND_NOT
[XAM] Implemented XamGetCurrentTitleId

Atualizações:

Notas Importantes
Lembrete de Compatibilidade: As versões 2.0.0 e posteriores não são compatíveis com a versão 1 do Xenia Manager. Se você está atualizando da versão 1, por favor, realize uma reinstalação limpa.
Novos Recursos e Melhorias
Readição da capacidade de personalizar arquivos de configuração padrão (#252)
Melhorias nas configurações do Xenia (#241)
Configuração de readback_resolve atualizada
Melhoria na otimização das configurações – Antes de aplicar a configuração, o sistema verifica se a configuração existe no arquivo de configuração
Correções de Bugs
Correção na exibição da resolução interna personalizada (#242)
Corrigido um problema onde a resolução interna personalizada era exibida incorretamente no primeiro lançamento das Configurações do Xenia.
Tarefas e Refatoração
Refatoração do Xenia Updater/Installer (#251)
Reformulado o sistema de atualização/instalação para melhorar a confiabilidade, manutenibilidade e desempenho geral.
[Vulkan] Exportação de memória de shader (#145)
[GPU] Corrigir gravação do gamma ramp após mudança na API RegisterFile (#2262)
[SPIR-V] Usar uma classe auxiliar para a maior parte dos ramificações if/else
Simplifica a emissão dos blocos em si (incluindo inserir blocos na lista de blocos da função na ordem correta), assim como os phi após o ramo.
Também corrige o armazenamento de 64bpp com blending na implementação do backend de renderização de shader de fragmento (havia um erro de digitação que causava a substituição dos 32 bits altos pelos baixos).
[GPU] Verificar os bits superiores da constante do fluxo de memexport ao reunir intervalo
[Base/GPU] Limpeza de comparações de ponto flutuante e NaN e -0 no clamping
Operadores relacionais em C++ devem gerar FE_INVALID se um argumento for NaN, usar std::isless/greater[equal] onde eram fáceis de localizar (embora haja outros lugares, principalmente min/max e o uso de clamp foi verificado).
Também corrige um erro de cópia/colagem que fazia o interpretador de shader da CPU executar MINs como MAXs.
[Base] Relaxar a permissão de diferença no relógio do sistema no teste
Esperamos que isso reduza a taxa de falhas do CI, embora essa abordagem de teste seja fundamentalmente falha, pois depende da programação do OS.
[Vulkan] Melhorias no uso de funcionalidades opcionais
Mudanças funcionais:
Habilitar apenas recursos realmente usados, pois os drivers podem adotar caminhos mais otimizados quando certos recursos estão desativados.
Suporte para VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE.
Corrigir a verificação separateStencilMaskRef fazendo o oposto.
Suporte para shaderRoundingModeRTEFloat32.
Corrigir ponteiro de vkGetDeviceBufferMemoryRequirements não passado para o Vulkan Memory Allocator.
Mudanças estilísticas:
Mover todas as extensões, propriedades e recursos do dispositivo para uma estrutura, especialmente simplificando as verificações de subconjunto de portabilidade de recursos, além de facilitar a solicitação de funcionalidades de novas extensões no futuro.
Remover sufixos de extensão do uso de extensões promovidas.
[VFS] Corrigido o decodificação inválida do mês em decode_fat_timestamp
[CPU] Adicionado passe de propagação de constantes para: OPCODE_AND_NOT
[XAM] Implementado XamGetCurrentTitleId