Avançar para o conteúdo

AMD Mantle: uma API gráfica testada em profundidade

    1650445204

    APIs, abstração e manto: uma cartilha de API

    A API Mantle da AMD é um tópico polarizador no mundo dos jogos para PC. Há muitas opiniões, muita informação, muita especulação e um punhado de fatos conhecidos para peneirar. Queremos contar toda a história, e queremos fazê-lo direito. Infelizmente, é quase impossível discutir este tópico sem recorrer ao jargão da indústria, então vamos começar do início e apresentar algumas definições, preparar o cenário, identificar onde estávamos e como chegamos aqui.

    O que é uma API?

    A sigla API significa interface de programação de aplicativos. A palavra-chave aqui é interface. Uma API é projetada para permitir que aplicativos interajam ou se comuniquem entre si.

    Um ótimo exemplo disso é a funcionalidade de copiar e colar no Windows. Quando você copia um parágrafo de texto do seu navegador para a área de transferência e depois cola esse texto em um processador de texto, você aplica o poder de uma API. Os desenvolvedores do seu navegador incluíram suporte para a solicitação (ou chamada) da API para copiar, enquanto os programadores do processador de texto incluíram suporte para a chamada da API para colar. Esses dois programas se comunicam por meio da API.

    A vantagem de uma API é que os desenvolvedores de software não precisam codificar suporte específico para cada aplicativo possível. Se não fossem as APIs, todos os softwares de edição de documentos do mundo teriam que conter um código exclusivo para fazer a interface de algo como a funcionalidade de copiar e colar com todos os outros softwares de edição de documentos do mundo. Esse modelo seria impossível de manter.

    A desvantagem? Uma API não é tão eficiente quanto codificar suporte específico para comunicação direta entre software. O preço da conveniência é o aumento da utilização de recursos de hardware e processamento. 

     OK, o que é uma API gráfica?

    Como existe uma API para fornecer uma interface de comunicação entre aplicativos, uma API gráfica se comunica entre um aplicativo e um driver de placa gráfica.

    O nome do jogo aqui é compatibilidade. Em vez de codificar um mecanismo de jogo para oferecer suporte a vários caminhos de interface com drivers de placa gráfica específicos, os desenvolvedores de jogos podem se concentrar na comunicação com a API. A API então chama o driver gráfico, que implementa suas instruções na placa gráfica. Dessa forma, as APIs gráficas podem ser consideradas uma das camadas de abstração entre o SO e o hardware.

    Se o propósito de uma API gráfica é simplicidade e conveniência, por que há mais de uma API?

    O OpenGL tem suas raízes no Iris GL proprietário da SGI, que foi lançado no início dos anos 80. Em um movimento surpreendente, a empresa o entregou como um padrão aberto chamado API OpenGL (Open Graphics Library). Os concorrentes da SGI tiveram acesso em troca de compartilhar o ônus de manter e atualizar o código.

    A Microsoft até teve um assento no OpenGL Architecture Review Board até 2003, quando a empresa retirou o suporte em favor de sua API proprietária DirectX, que agora é mais prolífica. Atualmente, o DirectX é usado no Windows e nos Xboxes, então é fácil justificar a escolha da API da Microsoft do ponto de vista de um desenvolvedor que deseja aproveitar ao máximo seus recursos disponíveis.

    Dito isso, John Carmack é um famoso reduto que vimos provar que o OpenGL ainda pode ser usado para rodar jogos de PC de ponta (como Rage). Além disso, o OpenGL é importante porque pode ser usado em várias plataformas: Windows, Mac e Linux. Android, Windows Phone e iPhone usam OpenGL ES (Open GL for Embedded Systems). À medida que os jogos em dispositivos móveis ganham destaque, o mesmo acontece com o OpenGL.

    O que há de errado com DirectX 11 e OpenGL? Por que o mundo precisa de outra API gráfica?

    Dois padrões em desacordo são ruins o suficiente. Parece contra-intuitivo adicionar outro. Então, como as APIs existentes ficam aquém das expectativas do desenvolvedor?

    Tanto o DirectX quanto o OpenGL foram criados no milênio anterior. Foi um tempo antes de CPUs multi-core em dispositivos convencionais serem possíveis. Recentemente, alguns desenvolvedores expressaram preocupações de que estão inchados, propensos à instabilidade e escalonam mal (ou nada) em plataformas bem encadeadas. Além disso, nenhuma API é perfeita. Você já precisou atualizar um driver gráfico para que um jogo funcionasse corretamente? Toda vez que isso acontece, a API gráfica falhou em seu papel de camada de abstração.

    Além disso, havia rumores de que a Microsoft considerou interromper o desenvolvimento do DirectX em 2013. Em entrevista ao c’t, Roy Taylor, da AMD, foi citado dizendo: “Um novo DirectX sempre renovou a indústria, novas placas gráficas precisam de mais processadores e mais memória RAM. Mas não vem o DirectX 12. É isso. Até onde sabemos, não há planos para o DirectX 12”. Além disso, um e-mail vazado da Microsoft disse que a plataforma de desenvolvimento multiplataforma XNA Game Studio não está em desenvolvimento ativo e que o DirectX não está mais evoluindo como tecnologia. A Microsoft mais tarde retirou isso e alegou que era uma falha de comunicação, mas sem planos publicados para o DirectX 12, a comunidade de desenvolvedores estava ficando ansiosa.

    Microsoft Xbox One

    Sony Playstation 4

    A AMD afirma ter sido orientada para a criação de uma nova API que resolveria esses problemas a pedido de desenvolvedores desencantados com o estado do DirectX e do OpenGL. Além disso, como as APUs e GPUs da AMD controlam o Xbox One, PlayStation 4 e muitos PCs, a empresa está em uma posição única para oferecer uma API que pode ser aproveitada em várias plataformas.

    Como o Mantle supostamente melhora em comparação com o OpenGL e DirectX?

    O manto está associado às frases “baixo nível” e “mais perto do metal”. Mas o que isso realmente significa? Em termos simples, a resposta é o minimalismo. É menor, mais simples e, consequentemente, mais rápido que DirectX 11 e OpenGL. A nova API da AMD supostamente faz menos suposições sobre como os desenvolvedores desejam renderizar uma determinada cena. Isso coloca mais controle dos recursos nas mãos do desenvolvedor, em vez das APIs, permitindo uma melhor otimização.

    Sob essa luz, o Mantle tem potencial para ser mais eficiente. Além disso, o Mantle é capaz de executar envios de desenho totalmente paralelos para dividir as cargas de trabalho em várias unidades de execução de CPU. Se a API for capaz de utilizar efetivamente mais recursos de processamento, CPUs mais lentas com várias unidades de execução podem ser um gargalo menor.

    Simplificando, a AMD afirma que o Mantle tem o potencial de aumentar o desempenho em sistemas com processadores host de vários núcleos mais lentos. Onde a CPU não é um gargalo, o Mantle pode até diminuir o consumo de energia da GPU.  

    A AMD afirma ser uma grande defensora do código aberto. O Mantle é uma API de código aberto?

    Mantle não é de código aberto, nem a AMD afirma que jamais será de código aberto no futuro. A empresa diz que disponibilizará o Mantle SDK para qualquer pessoa até o final de 2014, sem taxa de licença ou restrições, uma vez que o programa beta fechado esteja completo.

    Para esclarecer, o acesso ao SDK não é o mesmo que o código aberto. Mas isso significa que, em teoria, a Nvidia e a Intel poderiam escrever um driver compatível com o Mantle. Realisticamente, acho que isso é improvável. Mas vou guardar minha análise da situação para nossa conclusão. A questão é que a AMD quer manter o controle do Mantle para otimizá-lo para a arquitetura GCN e permitir a adoção rápida de novos recursos de hardware pelo desenvolvedor, o que não é prático para APIs genéricas como DirectX e OpenGL.

    Tudo bem, acho que entendi o básico do Mantle. E agora?

    Bem, queremos testar o Mantle e ver exatamente o que ele pode fazer. Embora a AMD prometa que vários desenvolvedores estão trabalhando no suporte Mantle para títulos futuros como Civilization: Beyond Earth, Star Citizen e Dragon Age: Inquisition, no momento da redação deste artigo, existem apenas três jogos no mercado que atualmente suportam a API da AMD. : Battlefield 4, Thief e Plants vs Zombies: Garden Warfare. Como Plants vs. Zombies: Garden Warfare não tem a funcionalidade de benchmark Mantle disponível e usa o mesmo mecanismo Frostbite que alimenta o Battlefield 4, vamos nos concentrar nos dois primeiros títulos habilitados para Mantle.

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x