Depois de ter aposentado o Mantle, a AMD parece estar realmente disposta a apostar suas fichas no DirectX 12, conjunto de APIs da Microsoft para lidar com o processamento gráfico. A “morte prematura” dessa solução – que deixou bons frutos e ainda vai permanecer no mercado por um tempo – abre ainda mais espaço para o crescimento desse recurso da Gigante de Redmond, o que deve ser bom para todos.
Uma prova de que a dona da série Radeon está mesmo incentivando o uso do DirectX 12 é o detalhamento do Asynchronous Shaders, publicado através do site Tom’s Hardware. Esse recurso deve estar integrado ao conjunto de APIs da Microsoft e promete uma melhora considerável no desempenho ao reorganizar a forma com que a GPU lida com suas tarefas.
DirectX 12, conjunto de APIs gráficas da Microsoft.
Asynchronous Shaders: uma forma mais inteligente de lidar com o processamento
Antes de partirmos para a explicação, é importante entender alguns conceitos e termos relacionados ao assunto. Os shaders da GPU são os responsáveis por desenhar as imagens, computar a física dos games, fazer o pós-processamento e muito mais. Cada uma dessas atividades é coletada de uma gigantesca fila, composta por filas menores que trazem tarefas para alimentar a maior.
No DirectX 11, havia basicamente duas formas com as quais essa fila era alimentada: o Multi-threaded Graphicis e o Multi-threaded Graphicis com preempção e priorização. Cada um desses métodos possui suas vantagens e desvantagens, mas os maiores problemas dessas soluções são a latência e a ausência de prioridade para algumas tarefas urgentes.
Multi-threaded Graphicis.
O processamento síncrono do Multi-threaded Graphicis faz com as filas de tarefas sejam processadas uma de cada vez. Isso acaba criando um intervalo que atrasa atividades importantes e faz com que a GPU nunca trabalhe com 100% de sua capacidade.
Multi-threaded Graphicis com preempção e priorização.
A adição da preempção e priorização ao Multi-threaded Graphicis conseguiu eliminar a falha em não dar atenção a tarefas importantes. Esse método consegue pausar a alimentação de uma fila para priorizar outra, mas tem como desvantagem exatamente essa pausa, o que pode causar problemas de perfomance por causa da mudança constante de prioridades.
Asynchronous Shaders, Multi-threaded Graphicis assíncrono com preempção e priorização.
O DirectX 12 vai resolver esses problemas com o Asynchronous Shaders, um método mais inteligente para lidar com a fila de tarefas dos shaders da GPU. Podemos encarar essa solução como o Multi-threaded Graphicis assíncrono que ainda trabalha com a preempção e priorização. Aqui, cada um dos ACEs (Asynchronous Compute Engines, “motor” responsável pelas filas) nas GPUs baseados no GCN vão intercalar as tarefas, alimentando as filas corretamente e preenchendo os espaços deixados no método tradicional.
Para lidar com a necessidade de priorizar uma tarefa, uma “fila vazia” está à disposição para ser usada pelos shaders da GPU, dispensando a ação de pausar complemente a fila principal para dar atenção a uma única tarefa.
ACEs que podem lidar com a alimentação de até oito filas.
Melhora significativa
Nas GPUs GCN da AMD, cada ACE pode lidar com a alimentação de até oito filas. Além disso, cada um desses “motores” vai funcionar de forma a eliminar as desvantagens apresentadas pelos métodos tradicionais de atribuição de tarefas.
O resultado disso é um aumento de perfomance significativo, permitindo ter os resultados gráficos de um pós-processamento “quase de graça”, sem sacrificar o desempenho das GPUs.
.....
O destaque dessa solução apresentada pela AMD não poderia ser outro se não os games. Porém, como a fonte também lembra aos leitores, a realidade virtual pode tirar vantagem desse método por permitir um aumento na taxa de FPS sem sacrificar a qualidade das imagens.
Isso provavelmente não compreende todas as inovações que a companhia espera implementar, restado-nos aguardar para recebermos mais notícias sobre os planos da AMD para o futuro.
Fontes
Categorias