24 lines
1.4 KiB
Rust
24 lines
1.4 KiB
Rust
//! 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,
|
|
}
|