prometeu-runtime/discussion/workflow/agendas/AGD-0010-perf-gfx-render-pipeline-and-dirty-regions.md

2.4 KiB

id ticket title status created resolved decision tags
AGD-0010 perf-gfx-render-pipeline-and-dirty-regions Agenda - [PERF] GFX Render Pipeline and Dirty Regions open 2026-03-27

Agenda - [PERF] GFX Render Pipeline and Dirty Regions

Problema

O renderer gfx recompõe a cena inteira a cada frame logico, mesmo quando a mudanca visual e pequena.

Hoje render_all() reconstrói buckets de sprites, escaneia os 512 sprites, redesenha layers e aplica dois passes fullscreen de fade sem politica de invalidacao.

Dor

  • custo visual basico cresce demais para hardware simples.
  • pequenos updates pagam preco de full redraw.
  • fade, HUD e world composition ficam sempre no caminho critico.

Hotspots Atuais

Alvo da Discussao

Definir ate onde o v1 precisa sair do modelo brute force para um pipeline com invalidacao e custo previsivel.

O Que Precisa Ser Definido

  1. Granularidade de invalidacao. Escolher entre:

    • dirty flag por frame inteiro;
    • dirty region por layer;
    • dirty list por sprite/HUD;
    • combinacao minima viavel.
  2. Buckets e traversal de sprites. Decidir se os buckets continuam sendo reconstruidos por frame ou se viram estrutura incremental.

  3. Fades. Definir se fade neutro precisa bypass total e se fade parcial pode operar por regiao/camada.

  4. Cache de composicao. Delimitar se layers estaticas/HUD podem manter cache intermediario.

  5. Meta de custo. Fechar qual teto de pixels/trabalho por frame e aceitavel no baseline.

Open Questions de Arquitetura

  1. O fantasy console quer simular hardware de full redraw ou quer um renderer pragmatico para handheld barato?
  2. Dirty regions quebram alguma expectativa de determinismo visivel?
  3. O HUD deve continuar no mesmo pipeline da world scene?

Dependencias

  • ../specs/04-gfx-peripheral.md
  • ../specs/11-portability-and-cross-platform-execution.md

Criterio de Saida Desta Agenda

Pode virar PR quando houver decisao escrita sobre:

  • nivel minimo de invalidacao no v1;
  • politica de rebuild de buckets de sprites;
  • bypass/cache de fade e HUD;
  • meta de custo para o render pipeline.