O DuckStation, um dos principais emuladores do PlayStation para dispositivos Android, acaba de receber uma atualização significativa em sua versão Preview. A nova versão inclui melhorias na compilação de shaders e pipelines gráficos, permitindo que o processo ocorra em múltiplas threads do CPU. Essa mudança visa reduzir o tempo gasto na compilação de recursos gráficos durante a execução de jogos, especialmente em situações em que os shaders não estão pré-cachados.
Compilação multi-threaded e ajustes no cache de shaders
De acordo com informações compartilhadas por Baldly Rudy no X, a atualização envolve uma série de commits que reorganizam a forma como o DuckStation gerencia os recursos gráficos. Agora, o emulador ajusta automaticamente o número de threads de trabalho com base nas capacidades do CPU do dispositivo. Se os threads existentes estiverem ocupados e houver mais tarefas pendentes, o DuckStation pode iniciar novos threads até o limite configurado.
Além disso, o thread principal do emulador também pode ajudar no processamento de tarefas pendentes, em vez de simplesmente aguardar o término do trabalho em segundo plano. Essa abordagem é especialmente relevante para a compilação de shaders, que agora é feita de forma multi-threaded. Em vez de compilar os shaders um após o outro, o DuckStation envia as falhas no cache de shaders para um sistema de tarefas assíncronas.
Suporte a múltiplas APIs e exclusão do OpenGL
A nova funcionalidade está disponível para APIs como Direct3D 11, Direct3D 12, Vulkan e Metal. O OpenGL, no entanto, não está incluído nessa atualização, pois o DuckStation não considera a compilação de shaders por meio desse backend como thread-safe. Para garantir a eficiência, o emulador agora usa chaves de cache baseadas em UID, derivadas das configurações gráficas. Isso permite que o DuckStation verifique se um shader já foi compilado antes de gerar seu código-fonte.
A estrutura do cache de shaders também foi atualizada, o que pode resultar na recompilação de shaders para usuários que migram para essas novas versões. Esse processo deve reduzir os gargalos de compilação, especialmente após mudanças nas configurações gráficas, limpeza do cache de shaders ou execução de configurações que exigem a preparação de muitos shaders.
Impacto no desempenho e status atual
Embora as mudanças não tenham como objetivo direto aumentar as taxas de quadros, elas devem reduzir significativamente o tempo gasto na compilação de shaders e pipelines quando o DuckStation encontra recursos que não estão no cache. No entanto, ainda não há benchmarks públicos que comprovem melhorias mensuráveis. As atualizações estão disponíveis apenas na versão Preview do DuckStation, e os usuários interessados podem acessar os detalhes no repositório oficial no GitHub.
Fonte: VideoCardz
