Skip to content

About this page

On this page

Graphics Synthesizer ​

Esta seção está em beta. Veja a nota na folha de referência.

O Graphics Synthesizer (GS) é o chip gráfico do PS2. É um chip separado com sua própria memória de vídeo local.

Memória local ​

O GS tem 4MB de eDRAM no próprio chip, usados para o frame buffer, o z-buffer e as texturas em uso. O EE não pode ler nem escrever nesta memória diretamente. Tudo o que está na memória do GS (um upload de textura, um frame buffer limpo, um triângulo) chega como um comando que o GS executa.

Pacotes GIF ​

Os comandos são empacotados como pacotes GIF (GIF = Graphics Interface): dados etiquetados que o front end do GS desempacota em escritas de registradores e desenhos de primitivas. Um pacote normalmente é enviado ao GS por seu próprio canal de DMA (DMA_CHANNEL_GIF, canal 2; veja DMA).

Registradores privilegiados ​

Alguns registradores do GS são mapeados em memória no espaço de endereços do EE (sem passar por DMA) para o que a CPU precisa acessar de forma síncrona: temporização de vídeo, o buffer de exibição atual e o status de interrupção. Os endereços, de ee_regs.h:

RegistradorEndereçoFinalidade
GS_PMODE0x12000000Configuração do circuito de saída (quais circuitos de leitura estão ativos, alpha blending entre eles)
GS_SMODE1/GS_SMODE20x12000010/0x12000020Temporização de vídeo e modo de sincronização
GS_BGCOLOR0x120000e0Cor de fundo quando nada mais é desenhado
GS_CSR0x12001000Controle e status: flag de interrupção de VSync, campo atual, reset

Todo o resto, incluindo tipo de primitiva, cor de vértice, parâmetros de textura, modo de alpha blend e os ponteiros do frame e do z-buffer, passa por pacotes GIF.

Bibliotecas de desenho ​

Este SDK tem duas bibliotecas para desenhar. Não as use juntas em um mesmo projeto:

  • gsKit - uma API em estilo de modo imediato: monte uma primitiva e chame uma função de desenho. O gskit-toolkit adiciona carregamento de texturas a partir de freetype e libpng.
  • ps2gl - uma API semelhante a um pequeno subconjunto do OpenGL.

Ambas montam pacotes GIF e os enviam por DMA ao GS. Bibliotecas de nível mais alto construídas sobre uma delas geralmente não funcionam com a outra.

Posicionamento do frame buffer e do z-buffer ​

Frame buffers, z-buffers e texturas devem ser colocados em offsets escolhidos dentro dos 4MB e dimensionados para caber. Você administra esse orçamento (gsKit e ps2gl têm, cada uma, um alocador para isso).

Veja também ​

  • DMA - como os pacotes chegam ao GS
  • Vector Units - a VU1 geralmente monta os pacotes GIF