Framebuffer

Conjunto de dados armazenados temporariamente na placa de vídeo em forma de matriz. Esses dados serão usados para exibir os frames na tela do monitor.

Categoria de Tecnologia

Postado em 13 fevereiro 2023

Atualizado em 13 fevereiro 2023

Palavras-chave: computador,pc,cpu,processador,dados,conjunto,frames,monitor,video,matriz,armazenamento

Visualizações: 1387



A digitalização de informação em dados binários é uma técnica que permite voltarmos no tempo. Uma foto ou vídeo possuem um conjunto de dados que representam imagens que podem ser exibidas na tela de um computador.

No processo de exibição de imagens na tela de um computador, as informações que serão exibidas na tela precisam ser armazenadas temporariamente na memória do computador. O responsável por esse processo é o framebuffer.

O que é o framebuffer?

O framebuffer é a memória que armazena as cores de cada pixel que compõem uma imagem na tela de um dispositivo. Geralmente, essa memória fica situada na memória de vídeo de modo separado da memória RAM principal do computador. Em computadores mais antigos, os dados do framebuffer eram armazenados na memória principal, dividindo espaço com outras tarefas do sistema. Isso limitava a qualidade da imagem na época que tinha que compartilhar espaço na memória.

Os dados do framebuffer são armazenados em matriz. Cada elemento da matriz representa um pixel na tela do dispositivo. Cada pixel tem uma sequência de bytes que contém informações de cor e transparência (lembrando que cada byte tem 8 bits). Quanto mais bits por elemento, mais profundidade terá a cor, dando uma impressão mais realista. Os modos de cores variam entre 8, 16 e 32 bits. O sistema de cor RGB (vermelho, verde e azul) usa 8 bits por cor, tendo um total de 24 bits (3 bytes) por pixel e pode chegar a ter 16,777,216 variações de cor, como mostra a conta abaixo:

  • RGB = 2828282^{8} * 2^{8} * 2^{8}
  • RGB = 2242^{24}
  • RGB = 16,777,216

O RGB também é bastante conhecido pela sequência de números (255, 255, 255), modelo bastante usado em linguagens de programação. O zero também é contado, por essa razão são 3 três valores com capacidade de 256 níveis de intensidade de vermelho, verde e azul.

sistema de cor rgb framebuffer

O número de elementos em uma matriz depende da largura, altura e profundidade de cor. Uma tela de computador com largura de 1,280 pixels e 720 pixels de altura teria um valor total de 921,600 pixels. Esse valor total é exibido na tela 1 vez por frame. A tela do computador, geralmente é atualizada 60 vezes por segundo, isso é 60 FPS (Frames per second), ou 60 Hz (Hertz). Ou seja, a tela atualiza uma vez a cada 0,016 segundos (16 milissegundos). Em outras palavras, um dispositivo com uma tela de resolução 1280x720 exibiria um total de 55,296,000 pixels por segundo. Cada segundo necessitaria de 165 megabytes de espaço no framebuffer para a exibição de conteúdo

  • Espaço necessário por segundo: 1280 pixels * 720 pixels * 60 FPS * (24 RGB bits / 8 bits)
  • Espaço necessário por segundo: 92160 pixels * 60 FPS * (24 RGB bits / 8 bits)
  • Espaço necessário por segundo: 55,296,000 pixels por segundo * (24 RGB bits / 8 bits) bytes
  • Espaço necessário por segundo: 165,888,000 bytes por segundo
  • Espaço necessário por segundo: 165 megabytes por segundo

Geralmente, quando uma imagem é armazenada na memória auxiliar da máquina, ela é compactada (comprimida), tendo um tamanho bem menor e salvando mais espaço na memória de armazenamento. No caso do framebuffer, essa compressão não acontece, portanto os dados de imagens armazenados no framebuffer são brutos.

A largura de banda da memória do GPU (Graphics processing unit) de computadores modernos podem processar uma grande quantidade de dados por segundo. Alguns exemplos são:

GPU Video RAM Largura de banda
P4000 8GB GDDR5 243 GB/s
RTX5000 16GB GDDR6 448 GB/s
A100 40GB HBM2 1555 GB/s

Como funciona o framebuffer?

O framebuffer envia informações de forma contínua para a placa gráfica, que irá converter os dados para um formato externo, como VGA ou HDMI. Finalmente, esses dados são transmitidos e exibidos no monitor.

Framebuffer
Placa gráfica
Monitor

A frequência padrão utilizada é de 60Hz, mas pode ser modificada para valores como 30Hz ou 120Hz. Quanto maior a frequência melhor é a qualidade da imagem, porém o consumo de energia também aumenta.

A geração de dados que são armazenados no framebuffer vem do processador. O processador pode receber dados de dispositivos de entrada que irão mudar o conteúdo que aparece na tela. O controle e gerenciamento do framebuffer é realizado por uma placa de vídeo ou outro hardware responsável. Na maioria das vezes, o processador trabalho junto com a placa de vídeo para produzir o conteúdo que é exibido na tela.

framebuffer e processador

História do framebuffer

O framebuffer apareceu pela primeira vez em 1972. Desde então, os dados de exibição de imagens compartilhavam o mesmo espaço da memória principal. Outra técnica bastante utilizada na época era o “scan line”.

Muitos monitores modernos ainda usam a técnica de scan line que desenha linhas horizontais na tela. Essa técnica é usada desde a época dos monitores CRT. CRT é a sigla para “Cathodic Ray Tube”, em português, “Tubo de raios catódicos”.

monitor crt antigo

Na traseira do monitor tinha uma canhão de elétrons (canhão eletrônico) que disparava feixes de elétrons em cada linha da tela. Esse processo era repetido em todas as linhas da tela, formando a imagem que era exibida.

scan line

Ao se aproximar da tela, era possível enxergar as linhas que formavam a imagem. Entre as linhas, existia um pequeno espaço preto.

scan line espaços entre as linhas

Conclusão

O framebuffer é um conjunto de dados que geralmente é armazenado temporariamente na placa de vídeo em forma de matriz. Esse conjunto de dados é as informações que serão exibidas na tela a cada frame. Em computadores antigos, esses dados compartilhavam o mesmo espaço que a memória principal, limitando a qualidade da imagem pela falta de espaço.

Projetos práticos

Desenvolvendo o campo de visão de um personagem em um plano 2D

Detectando objetos que entram dentro do campo de visão do personagem. Útil para servir de "gatilho" para eventos em um jogo.

Criando o esqueleto de um jogo de tiro 2D visto de cima usando P5.js

Usando lógicas matemáticas como trigonometria para criar e calcular o esqueleto de um jogo de tiro 2D em javascript

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Usando dados fornecidos pelo TSE para simular o gráfico das eleições presidenciais de 2022

Simulação dos gráficos do segundo turno das eleições presidenciais, utilizando python e ferramentas de análise de dados, pandas e jupyter.

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Veja também

Uma das vantagens de ter um robô trabalhando para você é o aumento da produtividade

Hoje em dia não é mais necessário gastar o nosso tempo com tarefas que podem se automatizadas. Os robôs estão aqui para nos ajudar...

O usuário malicioso joga a isca e espera a vítima pacientemente

Phishing tem esse nome pois a vítima se torna só mais um peixe na rede. Ter conhecimento de phishing é o melhor jeito de evitar ser um desses peixes

Steering Behaviors (Comportamentos de navegação)

Conjunto de técnicas de algoritmo que simulam comportamentos realísticos. Usado em jogos e em pesquisas biológicas para o estudo de comportamentos.

LAN

Rede local de computadores (LAN) é um conjunto de computadores ou dispositivos conectados uns aos outros de forma isolada em um pequeno local.

Ciência de dados

Data Science ou ciência de dados, é uma área de computação que se concentra em extrair informações valiosas de grandes quantidades de dados.

Matriz de Ansoff

Matriz de Ansoff em português é uma estratégia de crescimento da empresa no mercado. Ansoff é o sobrenome de um russo-americano, Igor Ansoff.