Autor: Thorsten Leemhuis (Copyright (c) 2012 Heise Media UK Ltd.)
Traduzido: Marcelo Soares Souza (Dúvidas e melhorias na tradução envie por E-mail)
Originalmente: http://h-online.com/-1571683
O Kernel do Linux 3.4 vê o driver nouveau DRM/KMS - classificado como driver em avaliação até o momento, embora localizado no subsistema DRM desde a sua criação - finalmente dá adeus[1] ao estado de avaliação. Isto significa que qualquer mudança futura na interface oferecida pelo kernel ao driver nouveau no libdrm, Mesa 3D e X.Org precisara[2] ser compatível com as versões anteriores.
A saída do Nouveau da área de avaliação foi uma surpresa e foi realizada em conjunto[3] com um destaque adicional ao Linux 3.4. Apenas algumas horas[4] após a NVIDIA ter lançado a placa gráfica GeForce GTX 680, os desenvolvedores do Kernel adicionaram um suporte rudimentar a esta ao driver nouveau DRM/KMS. Inicialmente este apenas habilita as funcionalidades básicas como configuração comuns de modos de display; entre estas resoluções padrões para visualização Widescreen que não são suportadas pelos drivers VESA.
Alguns dias depois[7], extensões experimentais foram adicionadas ao código do nouveau no libdrm e X.Org habilitando este, em conjunto com o driver DRM/KMS no Linux 3.4, a oferecer aceleração 2D e Xv na GeForce GTX 680. Pouco depois disto[8], mudanças[9] foram acrescentadas ao driver Mesa 3D nouveau ncv0. Até então o driver apenas lidava com os chips gráficos Fermi, utilizado em placas da série GeForce 400 e 500. As mudanças significam que o driver Mesa 3D agora suporta também o chip GTX 680's NVE4/GK104 Kepler, o qual a NVIDIA introduziu como mudança das arquiteturas Fermi para Kepler. Mais placas gráficas com chips Kepler desde então foram lançadas, mas ainda não serão suportadas no Linux 3.4.
É provável que vários meses se passem antes que as distribuições GNU/Linux adicionem todos os componentes necessários para o suporte a GTX 680. É também provável que se passe algum tempo antes de serem capazes de utilizar plenamente a aceleração destas placas gráficas; para que isto ocorra é preciso antes que alguém escreva um firmware aberto para esta. Assim como em alguns chips gráficos recentes da arquitetura Fermi, algumas funcionalidades de aceleração oferecidas pelas primeiras GPU Kepler podem ser utilizadas apenas após a extração do firmware[10][11] do driver proprietário da NVIDIA.
O driver proprietário da NVIDIA suporta o GTX 680 desde a versão 295.33, que foi lançado juntamente com a placa. Este driver também suporta as funcionalidades de gerenciamento de energia e controle da fan, funcionalidades apenas suportada de forma rudimentar no driver nouveau.
AMD
O driver Radeon DRM/KMS no Kernel 3.4 irá suportar a família Southern Islands (SI) e Trinity (TN). A geração SI, também conhecida como RAxx, inclui os chips gráficos Tahiti, Pitcairn e Verde encontrados em placas mid a high-end que consiste nas séries Radeon HD 7700, 7800 e 7900. Um driver Gallium3D para o Mesa 3D que trabalha em conjunto com os drivers DRM/KMS esta em desenvolvimento. Uma versão de pré-lançamento foi disponibilizada no inicio de Abril[16]. Uma vez disponibilizada, um driver para o X Server da X.Org (DDX/Device Dependent X) também fara uso deste driver Gallium3D para funções de aceleração.
Trinity é o codinome da série de processadores equipadas com um core gráfico on-board, o qual a AMD espera disponibilizar nas próximas semanas. Eles esperam herdar características dos processadores Llano da série A da AMD, que é primariamente utilizado em desktops e laptops de baixo custo. A adição do suporte para a GPU Trinity dentro do Kernel foi seguido dos lançamentos dos drivers proprietários 6.14.4[17] dos drivers Radeon para o X-Org X Server, que agora suporta o núcleo gráfico do Trinity (aka Aruba[18]). A velocidade que isto ocorreu foi resultado das semelhanças entre esta GPU e o chip Cayman. Este último pertence a geração de chips Northern Islands (encontrado em muitas placas da série 6000) e que já é suportado já a algum tempo. Ao mesmo tempo, os desenvolvedores da AMD também adicionaram suporte ao libdrm[19] e na árvore de desenvolvimento do Mesa 3D[20].
O Linux 3.4 adicionar suporte a 2D tiling[23] para os chips Northern Islands e ao chip Evergreen (encontrado nas séries 5000). A tecnologia distribui dados de forma diferenciada dentro da memória gráfica, que pode resultar em melhorias de performance. Este também pode ser utilizado em conjunto com o driver Radeon x86-video-ati 6.14.4 DDX.
Enquanto isto, uma mudança de apenas duas linhas[24], adicionada dentro do Kernel 3.4, possibilita que o DisplayPort em adaptadores VGA, em processadores da série A (aka Nutmeg), funcione. A correção foi produzida após várias semanas de bug-hunting, descrita pelo desenvolvedor Jerome Glisse em sua mensagem no blog, "Weeks in the life of GPU driver developer[25]", que ilustra até onde, às vezes, um desenvolvedor do kernel pode ir.
Intel
Desenvolvedores da Intel adicionaram um patch[26] que faz com que o Linux 3.4 utilize o RC6 por padrão, a funcionalidade de gerenciamento de energia do núcleo gráfico em processadores Sandy Bridge que contém uma GPU (graphics processing unit) integrada. Tipicamente esta funcionalidade reduz o consumo de energia enquanto esta inativo entre três e cinco watts, isto deve ampliar a vida da bateria e reduzir o nível de ruído, desde que a fan terá menos ar quente para expelir do sistema.
Esta funcionalidade já estava disponível e poderia ser ativada usando o parâmetro do kernel i915.i915_enable_rc6=1, porém poderia levar a instabilidade do sistema. A Intel esta esperançosa que desabilitando o modo de deep sleep do RC6 irá por fim ao problema. De acordo com a equipe de desenvolvimento da Intel, o ganho na economia de energia neste modo é pequeno se comparado com o modo shallower sleep. Usuários que desejem utilizar o modo deep sleep podem utilizar parâmetros para ativa-lo.
A equipe de desenvolvimento da Intel também corrigiu[28] um erro no driver i915 DRM/KMS que resultava ocasionalmente em corrupção da memória quando se saia do modo hibernate/software suspend/ACPI S4; o problema existia a mais de um ano. Esta correção também foi adicionado nos Kernel's estáveis 3.0.27, 3.2.14 e 3.3.1.
A partir do 3.4, o driver da Intel irá suportar também interlacing nas saídas HDMI e SDVO (1[29], 2[30]). Em núcleos gráficos mais recentes, o driver i915 DRM/KMS irá agora utilizar as funcionalidades swizzling[31] e ppgtt[32], que pode melhorar um pouco a performance. Durante a fase de estabilização, problemas foram encontrados envolvendo o uso entre o DMA remapping (requerido para o VT-d) e o ppgtt. Consequentemente, o kernel irá usar este apenas [33] quando o DMA remapping estiver desativado - onde, por exemplo, o VT-d esta desativado no BIOS.
Rodando Monitores USB
O Kernel também ganhou[34] um driver DRM/KMS de nome udl. Este implementa o protocolo DisplayLink[35], que é utilizado para controlar monitores USB. O driver foi escrito por Dave Airlie e suporta as funcionalidades básicas de dispositivos UDL. O recentemente disponibilizado driver[36] xf86-video-modesetting pode ser usado com o driver udl KMS; este driver DDX se baseia inteiramente no KMS e, em contraste aos drivers da Intel, nouveau e Radeon (que também faz uso intensivo do KMS), não inclui funcionalidades especificas de um chip gráfico. O driver de mode setting é portanto capaz de trabalhar em conjunto com outros drivers KMS incluindo, por exemplo, o driver para GMA500 do chipset Intel US15W (Poulsbo).
grande parte do código do udl são baseados no udlfb, um driver para framebuffer USB DisplayLink que é parte do Kernel já a algum tempo e oferece funcionalidades semelhantes. Por portar-lo para a infraestrutura DRM/KMS usada por outros drivers gráficos, este é capaz de se beneficiar da mesmas bases.
O driver udl é apenas uma das muitas mudanças para o kernel, X Server e etc. atualmente em desenvolvimento e projetadas para possibilitar que dispositivos gráficos sejam conectados e desconectados de sistemas sem a necessidade de reiniciar o X Server.
Outras melhorias básicas no framework[37] prime/dma-buf, permitem que núcleos gráficos troquem dados com um overhead minimo e foram adicionadas no Kernel 3.4. A longo prazo, isto tem com objetivo de aprimorar o suporte para chips gráficos hot plug, permitindo, por exemplo que um chip NVIDIA transfira uma imagem que este calculou para um outro processador gráfico de saída sem muito esforço. Embora nenhum driver atualmente esteja utilizando esta nova infraestrutura, extensões para os drivers nouveau, i915, udl, exynos e omap DRM/KMS estão sendo esperadas[38] para serem adicionadas no Linux 3.5.
Diversos
Um driver para o dispositivo gmux usando em alguns sistemas Apple para a troca entre dois chips gráficos foi adicionado[39] ao Kernel do Linux. Este driver não adiciona suporte completo para a troca para o segundo chip gráfico (ligando e desligando), e permite a mudança de brilho em sistemas Apple suportado.
Novas funções[40] possibilita a transferência de informações necessárias, através do sysfs, de endereçamento de monitores (EDID/extended display identification data) para o Kernel durante o Boot. Isto pode ser útil quando chaveadores KVM corrompe informações quando as placas gráficas e monitores não transmite as informações EDID corretamente. Detalhes podem ser encontrados em artigo da OSADL (Open Source Automation Development Lab)[41].
Links deste Artigo
[1] http://git.kernel.org/linus/f3c93cbde7eab38671ae085cb1027b08f5f36757
[2] http://git.kernel.org/linus/ba331d5decbfe1cc8b1bf10fb7005f4b972c4f0e
[3] http://git.kernel.org/linus/ba331d5decbfe1cc8b1bf10fb7005f4b972c4f0e
[4] http://thread.gmane.org/gmane.linux.kernel/1271464
[5] http://thread.gmane.org/gmane.linux.kernel/1292477
[6] http://thread.gmane.org/gmane.linux.kernel/1292856/focus%3D1293551
[7] https://plus.google.com/u/0/109430210070297725121/posts/SywKQGG8K6J
[8] https://plus.google.com/u/0/109430210070297725121/posts/cf2eqYGBD9R
[9] http://cgit.freedesktop.org/mesa/mesa/commit/?id=e44089b2f79aa2dcaacf348911433d1e21235c0c
[10] http://nouveau.freedesktop.org/wiki/InstallDRM#Firmware
[11] http://nouveau.freedesktop.org/wiki/NVC0_Firmware
[12] http://git.kernel.org/linus/cb28bb341c2e43dde599d888a99a4a83f50369cc
[13] http://git.kernel.org/linus/fc7dbcc371c2b35d41f4db71aed7c55bb2a1175e
[14] http://git.kernel.org/linus/8848f759c0de139bada271aa446f48637c98ca1a
[15] http://git.kernel.org/linus/d09b38d4311d5a1d94407a3f65313a51ce96814f
[16] http://lists.freedesktop.org/archives/mesa-dev/2012-April/020593.html
[17] http://thread.gmane.org/gmane.comp.freedesktop.xorg.announce/1652
[18] http://xorg.freedesktop.org/wiki/RadeonFeature#Radeon_3D_Hardware
[19] http://thread.gmane.org/gmane.comp.video.dri.devel/66957
[20] http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4082f492b4b55df4c636445e47b97d1f1e4b5b2
[21] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-4-Part-1-Infrastructure-1561840.html
[22] http://www.h-online.com/open/features/Kernel-Log-Coming-in-3-4-Part-2-Filesystems-storage-and-drivers-1563929.html
[23] http://git.kernel.org/linus/285484e2d55e76031b45926720c10b1aec8b782a
[24] http://git.kernel.org/linus/700698e7c303f5095107c62a81872c2c3dad1702
[25] http://jglisse.livejournal.com/3472.html
[26] http://git.kernel.org/linus/aa46419186992e6b8b8010319f0ca7f40a0d13f5
[27] http://git.kernel.org/linus/83b7f9ac9126f0532ca34c14e4f0582c565c6b0d
[28] http://git.kernel.org/linus/3fa016a0b5c5237e9c387fc3249592b2cb5391c6
[29] http://git.kernel.org/linus/c3febcc438ba0878b164c74310bd77c50dbb0ba8
[30] http://git.kernel.org/linus/8f4839e21ea9a8f7300daac1fa30bfec514c9a25
[31] http://git.kernel.org/linus/f691e2f4cec334e906f971471b3bf1460c6256d4
[32] http://git.kernel.org/linus/e21af88d39796c907c38648c824be3d646ffbe35
[33] http://git.kernel.org/linus/650dc07ec3b0eba8ff21da706d2b1876ada59fc3
[34] http://git.kernel.org/linus/5320918b9a87865223fd6b228e530bf30bc64d9d
[35] http://en.wikipedia.org/wiki/DisplayLink
[36] http://www.h-online.com/open/features/Kernel-Log-Updates-to-Intel-graphics-drivers-and-util-linux-1444731.html
[37] http://git.kernel.org/linus/3248877ea1796915419fba7c89315fdbf00cb56a
[38] http://thread.gmane.org/gmane.linux.kernel/1274979
[39] http://git.kernel.org/linus/917ee75a59160fe3518c1672feb4562f11a18fbc
[40] http://git.kernel.org/linus/da0df92b57311aa1b26a2a90599ed16e1e968b90
[41] http://bit.ly/JfUiVy
[42] http://thread.gmane.org/gmane.comp.video.dri.devel/66634
[43] http://git.kernel.org/linus/c8df7428635c02ca3051e39179c83297d8b76fba
[44] http://git.kernel.org/linus/35c1682cc069fc1f677012d3170757135e246b39
[45] http://git.kernel.org/linus/7be865ab8634d4ec2a6bdb9459b268cd60e832af
[46] http://git.kernel.org/linus/2c07a21d6fb0be47fda696a618b726ea258ed1dd
[47] http://git.kernel.org/linus/019d96cb55ade38a4b4a52bba0304e8cd681f30a
[48] http://git.kernel.org/linus/b73d12303ecfc91123363d8900e127da44bf42a6
[49] http://git.kernel.org/linus/3ecd70b18cad5a5e04981f2a1d71e183f5d6ebc0
[50] http://git.kernel.org/linus/3e148baf464e5b5690ba68f3c310b06024bb862b
[51] http://git.kernel.org/linus/b1d7e4b41fd0f72ea8149056778db5d737739305
[52] http://git.kernel.org/linus/f887c425f9eeed8ffbca64c8be45da62b07096c0
[53] http://git.kernel.org/linus/fd99fd6100d3b7aaa8dc76888a38bbb15e8041bc
[54] http://git.kernel.org/linus/c7c039fd31be82ecb8d48477955e76badd38141a
[55] http://git.kernel.org/linus/bc6389e4fa1a6535021ffc4d3b37d48f9a0542e2
[56] http://git.kernel.org/linus/6bdf68c9a427220692ad7607858e96caa2cd3147
[57] http://git.kernel.org/linus/496a73bbecb81e6753715995e4519d152f814667
[58] http://git.kernel.org/linus/0a96d72be9ce6c5080f5b08a07f8e34b81b575ba
[59] http://git.kernel.org/linus/88f50c80748bf5238c88e70ee26c68ac48b94e68
[60] http://git.kernel.org/linus/43b3cd995f304c983393b7ed6563f09781bc41d0
[61] http://git.kernel.org/linus/48c0c902e2e6ca07b8c7ae1da48a7bb59eb88de9
[62] http://git.kernel.org/linus/25a857fbe973bdcc7df0df2e0c8f9c6e1ab0e475
[63] http://git.kernel.org/linus/d2800ee59ed28a5eaf3a4a8645feca040eacf7df
[64] http://git.kernel.org/linus/dd220a00e8bd5ad7f98ecdc3eed699a7cfabdc27
[65] http://git.kernel.org/linus/86a4d69c0ad62ced87a74bbd43f2acefc66a97b0
[66] http://git.kernel.org/linus/30388c6e48e62b2806b14552275f091e2f5adbf4
[67] http://git.kernel.org/linus/82d118efc65214f46138371a6daab5e7d71a723d
[68] http://git.kernel.org/linus/3c12513d2f5f0e9abb65be3d422d43ebee5f17d7
[69] http://git.kernel.org/linus/bf68adb4df2ac27a8f1b24894c007c9ef1c4195a
[70] http://git.kernel.org/linus/9c1dfc5574a7f7115c0fe5bd8f838a8b7a52ee6d
[71] http://git.kernel.org/linus/f413070e3f0bccb40ca939b90699347daf815607
[72] http://git.kernel.org/linus/026abc333205c1fff80138b8c2cac3d0347685f4
[73] http://git.kernel.org/linus/05442e5e1ff1e75868e4f83822775f41e18c63b4
[74] http://git.kernel.org/linus/0a79951a1f23e2f247936e6b400cadb9ee0808f8
[75] http://git.kernel.org/linus/fdcb68884b3b0def9cc410d07adbafe7c3a9e537
[76] http://git.kernel.org/linus/8dc50ec7755650859a7bfc17de8846ef1efa24a4
[77] http://git.kernel.org/linus/5350c65f4f15bbc111ffa629130d3f32cdd4ccf6
[78] http://git.kernel.org/linus/664c5f18490f2552900c3f1794602204a43acc86
[79] http://git.kernel.org/linus/ce880cb860f36694d2cdebfac9e6ae18176fe4c4
[80] http://git.kernel.org/linus/e75892715db800ee96fe4ac0407b73b57d866a68
[81] http://git.kernel.org/linus/9864ca20c50c2fcaba63767a336e16c88b46d7ad
[82] http://git.kernel.org/linus/9befe40f6e018e508b047eb76d189ede9b4ff03d
[83] http://git.kernel.org/linus/e9474be4eb6918c91cb0d296f9744e8ec0e08c11
[84] http://git.kernel.org/linus/7258cc14f310b912b6fea5421aedb9beb69d8581
[85] http://www.h-online.com/open/features/Linux-Kernel-3-4-Tracking-1563971.html
[86] http://www.h-online.com/search/?sort=d;rm=search;mediatype=3;q=kernel-log
[87] http://www.h-online.com/open/
[88] http://www.h-online.com/open/features/The-H-s-Linux-Kernel-History-1221120.html
[89] http://identi.ca/kernellog2
[90] http://twitter.com/#!/kernellog2
[91] http://identi.ca/kernellogauthor
[92] http://twitter.com/#!/kernellogauthor