tick system, AVX2 UTF-8 decoder, uh faster in general

This commit is contained in:
Zacharias-Brohn
2025-12-22 00:22:55 +01:00
parent f6a5e23f3d
commit 73b52ab341
30 changed files with 10231 additions and 5210 deletions
+23
View File
@@ -0,0 +1,23 @@
//! Per-pane GPU resources for multi-pane terminal rendering.
//!
//! This module provides GPU resource management for individual terminal panes,
//! following Kitty's VAO-per-window approach where each pane gets its own
//! buffers and bind group for independent rendering.
// ═══════════════════════════════════════════════════════════════════════════════
// PER-PANE GPU RESOURCES (Like Kitty's VAO per window)
// ═══════════════════════════════════════════════════════════════════════════════
/// GPU resources for a single pane.
/// Like Kitty's VAO, each pane gets its own buffers and bind group.
/// This allows uploading each pane's cell data independently before rendering.
pub struct PaneGpuResources {
/// Cell storage buffer - contains GPUCell array for this pane's visible cells.
pub cell_buffer: wgpu::Buffer,
/// Grid parameters uniform buffer for this pane.
pub grid_params_buffer: wgpu::Buffer,
/// Bind group for instanced rendering (@group(1)) - references this pane's buffers.
pub bind_group: wgpu::BindGroup,
/// Buffer capacity (max cells) - used to detect when buffer needs resizing.
pub capacity: usize,
}