75 lines
2.4 KiB
Markdown
75 lines
2.4 KiB
Markdown
---
|
|
id: AGD-0010
|
|
ticket: perf-gfx-render-pipeline-and-dirty-regions
|
|
title: Agenda - [PERF] GFX Render Pipeline and Dirty Regions
|
|
status: open
|
|
created: 2026-03-27
|
|
resolved:
|
|
decision:
|
|
tags: []
|
|
---
|
|
|
|
# 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
|
|
|
|
- [gfx.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-drivers/src/gfx.rs#L563)
|
|
- [gfx.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-drivers/src/gfx.rs#L671)
|
|
|
|
## 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.
|