sábado, 16 de novembro de 2013

Mais detalhes importantes do AMD MANTLE surgem na AMD APU 13

amd MANTLE
AMD terminou hoje o evento APU 13 com uma apresentação sobre a sua nova API de baixo nível, o AMD MANTLE, algumas novidades foram trazidas à tona.
 Os palestrantes foram  Johan Andersson, líder de desenvolvimento de motores gráfico da DICE, criadora da série Battlefield, Guennadi Rigger e Brian Bennet, ambos engenheiros da AMD .  Durante a apresentação técnica do AMD MANTLE, estavam presentes arquitetos de GPUs da NVIDIA, aparentemente NVIDIA não esta vendo essa API como algo antagônico apesar do seu silêncio até o momento.
AMD quer atacar um dos principais problemas que os desenvolvedores tem que enfrentar no PC, que é a baixa taxa de processamento de interações gráficas (draw calls) na cena devido à complexa arquitetura que separa o sistema entre diversas camadas divergentes como CPU, Sistema operacional, Driver de vídeo e GPU.  Para a placa de vídeo desenhar uma bola em 3D na sua tela, ela executa uma interação gráfica, para esta bola ser pintada e texturizada, mais duas execuções são necessárias,  quanto mais complexa é a cena, com texturas, iluminação e sombras, mais os objetos 3D vão precisar ser trabalhados nestas interações gráficas.    Se a quantidade de interações gráficas  forem limitadas na plataforma, os desenvolvedores tem que cortar passos para ganhar desempenho, ou seja, corta-se efeitos visuais ou os ameniza, usa texturas menos carregadas, evita que shaders trabalhem em mais objetos do que o sistema pode dar conta e por aí vai.  Consoles como o Xbox 360 são conhecidos por manterem uma capacidade de draw calls por volta de  10.000, o que permite os desenvolvedores compensarem outras limitações daquele tipo de hardware que não estão presentes nos PCs.
Pois bem, agora que você entendeu o problema do draw call, vamos ao próximo passo,  um PC comum e otimizado com uma bela placa de vídeo consegue fazer de 3000 a 5000 draw calls (conhecido no meio desenvolvimentista com “small batch”), porém a placa de vídeo tem condições de processar muito mais do que isso, AMD quer bater a taxa de 100.000 draw calls por quadro de imagem processado o que vai elevar as possibilidades aos desenvolvedores em 25 vezes aproximadamente.    Se você tem uma quantidade 25 vezes maior de draw calls,  duas coisas podem acontecer: a taxa de frames vai subir  ou a quantidade dos efeitos visuais que os desenvolvedores podem usar vão aumentar.   Estes são os principais benefícios que AMD quer trazer ao cenário desenvolvimentista de jogos no PC.
O slide abaixo mostra um gráfico do que a AMD espera atingir em taxa de interação gráfica ou draw calls:
amd_mantle_100k_drawcalls
Outro ponto que os palestrantes hoje fizeram questão de clarificar é sobre a abstração que envolve a API MANTLE e a sua compatibilidade com qualquer GPU do mercado atual.  Traduzindo de uma forma que possa ser mais facilmente entendida pelos nosso leitores, uma API que insere uma camada de abstração deste tipo, nada mais é do que um conjunto virtual de contratos dizendo como determinados tipos de serviços devem ser implementados pelos programadores e engenheiros de software do criador de GPU.  Estes contratos dizem claramente , a título de exemplo, como serviços de iluminação devem ser conectados diretamente à GPU, evitando rotas alternativas como drivers e ou o DirectX.   Isso abre um caminho fácil para qualquer dispositivo que seja uma GPU tenha sua implementação especificada diretamente no AMD MANTLE,  ou seja, qualquer GPU GCN da AMD, qualquer GPU da NVIDIA, ou da Intel, APUs da AMD,  ou até num nível mais profundo, processadores gráficos de consoles  podem ter suas versões diretamente portadas em comunicação de baixo nível para o MANTLE , basta que estas empresas designem os engenheiros de software para fazerem o trabalho necessário.    AMD quer que o MANTLE se torne um padrão industrial a ser levado a sério, mas não quer monopolizar o que vai ser feito com esta API.
amd_mantle_slides_01
A filosofia de design do AMD MANTLE basicamente é moldada em três pilares essenciais, simplicidade, performance e recursos. Os seguintes problemas deverão ser atacados diretamente por ele:
  • APIs gerando sobrecarga no processamento ao longo das camadas de funcionamento
  • nível inapropriado de funcionamento em grandes cargas de threads
  • Péssimo acesso e controle à memória
  • Ausência de acesso e controle da GPU (camadas se intrometendo nesta comunicação como Driver e DirectX além do próprio sistema operacional)
amd_mantle_slides_02

Um design fundamental do MANTLE é permitir preparar dados antecipadamente e reusá-los, sem necessariamente tais dados ficarem transitando pelo sistema, assim se evita sobrecarga desnecessária.  O gerenciamento de memória eficiente vai ajudar a lidar com a vasta quantidade de recursos que precisam estar operando hora na GPU, hora na CPU, facilitando para o desenvolvedor decidir como ele quer fazer as coisas e como.
Outros recursos interessantes são previstos como MSAA avançado, maior flexibilidade em implementar algorítimos complexos devido ao maior suporte da API ao controle de fluxo dos recursos internos usados,  multi-gpu avançado que vai além do tradicional modo AFR presente no CROSSFIRE no qual outorga a uma GPU específica o processamento de determinadas tarefas.
Parece muita coisa boa para uma API só né?  Mas se AMD conseguir mostrar o Battlefield 4 rodando o Mantle em dezembro agora como prometido, será o primeiro passo para revolucionar a indústria desenvolvimentista de games no PC.
Abaixo, o restante dos slides veiculados no evento:
amd_mantle_slides_10

amd_mantle_slides_03amd_mantle_slides_04amd_mantle_slides_05amd_mantle_slides_06amd_mantle_slides_07amd_mantle_slides_08amd_mantle_slides_09