--- 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.