ChrisOS Research ProjectOperating systems · language systems · graphics · machine emulation
DOCUMENTATION ARCHIVEMAIN BRANCH
ChrisOS/Shaders programáveis, subset GLSL e CSIR

Shaders programáveis, subset GLSL e CSIR

Pipeline programável

Renderer fixed-function oferece operações predefinidas; pipeline programável executa programas de vertex/fragment.

ChrisOS implementa subset definido de GLSL, não compatibilidade total.

Frontend

Compiler possui lexer, recursive-descent parser, AST e semantic analysis com tipos e interfaces de shader. Diagnostics carregam posição de fonte.

CSIR

subset GLSL
  ↓
AST / semântica
  ↓
CSIR
  ├── TGSI → VirGL
  └── interpreter → software

IR independente impede que semântica da linguagem fique presa a strings hardcoded do driver.

Interfaces e tipos

Stages usam inputs/outputs, uniforms, samplers e temps. Link verifica correspondência de varyings. Matrizes seguem semântica column-major do GLSL e exigem conversão coerente da representação CPU.

Control flow

O subset pode restringir loops e funções deliberadamente. Constructs fora do suporte precisam falhar explicitamente, não produzir shader errado silenciosamente.

TGSI e backend software

VirGL consome TGSI emitido de CSIR verificado. sh_exec.c interpreta o mesmo CSIR. Dois backends sobre uma IR comum permitem testes diferenciais.

API ChrisC

Funções de linguagem criam/dropam shaders/programs, linkam, consultam diagnostics e atualizam uniforms/samplers. Handles pertencem ao slot e são destruídos no teardown.

Mine Chris

Shaders de world já participam de proof draw VirGL, mas voxel renderer do jogo continua no caminho software. Compiler de shader pronto e migração do jogo são milestones diferentes.

Registro do documento ID: shaders-csir Reviewed source: da3df29cb397 Class: technical-chapter