Direct Rendering Manager
Da Wikipédia, a enciclopédia livre
Direct Rendering Manager (abreviado como DRM, Gerenciador de Renderização Direta em inglês) é um subsistema do kernel do Linux que faz interface com as GPUs das placas de vídeo modernas. O DRM expõe uma API que os programas de espaço de usuário podem usar para enviar comandos e dados para a GPU, e para executar operações, como configurar o modo de exibição do monitor. O DRM foi desenvolvido inicialmente como o componente de espaço do kernel do Direct Rendering Infrastructure do servidor X,[1] mas desde então tem sido usado por outras alternativas de pilha gráfica como o Wayland.
Este artigo resulta, no todo ou em parte, de uma tradução do artigo «Direct Rendering Manager» na Wikipédia em inglês, na versão original. |
Direct Rendering Manager | |
---|---|
Autor | kernel.org & freedesktop.org |
Desenvolvedor | kernel.org & freedesktop.org |
Escrito em | C |
Gênero(s) | |
Licença | |
Página oficial | dri |
Os programas de espaço do usuário podem usar a API do DRM para comandar a GPU para fazer a renderização em 3D e a decodificação de vídeo acelerada por hardware, além da computação GPGPU.
Visão geral
Resumir
Perspectiva
O kernel do Linux já tinha uma API chamada fbdev, usada para gerenciar o framebuffer de um adaptador gráfico,[2] mas ela não podia ser usada para lidar com as necessidades do hardware de vídeo baseado em GPU com aceleração 3D moderno. Esses dispositivos geralmente exigem a configuração e o gerenciamento de uma fila de comandos em sua própria memória para enviar comandos para a GPU, e também exigem o gerenciamento de buffers e espaço livre nessa memória.[3] Inicialmente, os programas de espaço do usuário (como o servidor X) gerenciavam esses recursos diretamente, mas geralmente agiam como se fossem os únicos com acesso a eles. Quando dois ou mais programas tentavam controlar o mesmo hardware ao mesmo tempo e definiam seus recursos, cada um à sua maneira, na maioria das vezes eles terminavam catastroficamente.[3]
O Direct Rendering Manager foi criado para permitir que vários programas usem recursos de hardware de vídeo cooperativamente.[4] O DRM obtém acesso exclusivo à GPU e é responsável por inicializar e manter a fila de comandos, a memória e qualquer outro recurso de hardware. Os programas que desejam usar as solicitações de envio de GPU para o DRM, que atua como um árbitro e toma cuidado para evitar possíveis conflitos.
O escopo do DRM foi expandido ao longo dos anos para abranger mais funcionalidades previamente tratadas pelos programas de espaço do usuário, como gerenciamento de framebuffer e configuração de modo, compartilhamento de objetos de memória e sincronização de memória.[5][6] Algumas dessas expansões recebem nomes específicos, como o Graphics Execution Manager (GEM) ou o Kernel Mode-Setting (KMS), e a terminologia prevalece quando a funcionalidade que eles fornecem é especificamente aludida. Mas eles são realmente partes de todo o subsistema DRM do kernel.
A tendência de incluir duas GPUs em um computador—uma GPU discreta e uma integrada—levou a novos problemas, como a comutação da GPU, que também precisavam ser resolvidos na camada de DRM. A fim de combinar a tecnologia Nvidia Optimus, o DRM foi expandido com a capacidade de descarregamento de GPU, chamado PRIME.[7]
Adoção
O subsistema de kernel Direct Rendering Manager foi inicialmente desenvolvido para ser usado com a nova infraestrutura de renderização direta do servidor de exibição XFree86 4.0, posteriormente herdado por seu sucessor, o X.Org Server. Portanto, os principais usuários do DRM eram clientes DRI que se vinculam à implementação do OpenGL acelerada por hardware que reside na biblioteca do Mesa 3D, bem como ao próprio servidor X. Atualmente, o DRM também é usado por vários compositores Wayland, incluindo o compositor de referência Weston. O kmscon é uma implementação de console virtual que é executada no espaço do usuário usando os recursos do KMS presentes no DRM.[8]
Em 2015, a versão 358.09 (beta) do driver proprietário Nvidia GeForce recebeu suporte para a configuração de modo da interface DRM implementada como um novo blob do kernel chamado nvidia-modeset.ko
. Esse novo componente de driver funciona em conjunto com o módulo do kernel nvidia.ko
para programar o mecanismo de exibição (ou seja, o controlador de exibição) da GPU.[9]
Ver também
Referências
- «Linux kernel/drivers/gpu/drm/README.drm». kernel.org (em inglês). Consultado em 29 de maio de 2018. Arquivado do original em 26 de fevereiro de 2014
- Uytterhoeven, Geert. «The Frame Buffer Device». Kernel.org (em inglês). Consultado em 2 de março de 2021
- White, Thomas. «How DRI and DRM Work» (em inglês). Consultado em 29 de maio de 2018
- Faith, Rickard E. (11 de maio de 1999). «The Direct Rendering Manager: Kernel Support for the Direct Rendering Infrastructure» (em inglês). Consultado em 29 de maio de 2018
- Corbet, Jonathan (6 de novembro de 2007). «Memory management for graphics processors». LWN.net (em inglês). Consultado em 29 de maio de 2018
- Packard, Keith; Anholt, Eric (13 de maio de 2008). «GEM - the Graphics Execution Manager». dri-devel mailing list (em inglês). Consultado em 29 de maio de 2018
- Airlie, Dave (12 de maio de 2010). «GPU offloading - PRIME - proof of concept» (em inglês). Consultado em 29 de maio de 2018. Cópia arquivada em 15 de dezembro de 2017
- Herrmann, David (10 de dezembro de 2012). «KMSCON Introduction» (em inglês). Consultado em 29 de maio de 2018
- «Linux, Solaris, and FreeBSD driver 358.09 (beta)» (em inglês). 10 de dezembro de 2015
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.