跳转到内容
Argus
开发版
下载GitHub
文档/设计/曲线与时间轴

曲线与时间轴

采样与显示

图表使用快照的采样时间。相邻有效读数按单调三次贝塞尔曲线连接,明确缺失的读数形成断点。窗口最小化或隐藏期间若只延长了采样间隔,恢复时仍按实际时间连接前后样本。设备历史按稳定标识区分,进程与应用的 CPU、内存历史在首次采样时开始记录。

动画参数控制时间窗、显示延迟和绘制节拍。流畅模式跟随显示器,均衡模式以 60 Hz 为目标,按整数个显示周期调度,省电模式按物理像素推进,关闭模式到达新采样时更新。暂停刷新会冻结显示时间,窗口隐藏或数据过期时停止持续绘制。

流畅和均衡模式下,CPU 核心条在一个采样间隔内从当前高度移到新值,其他模式直接显示最新高度。柱条底边和两侧对齐设备像素,顶边按亚像素覆盖率绘制。悬停圆点按曲线纹理和当前量程定位,随每一帧移动。指针静止时文字每 100 ms 刷新,收到新采样或移动指针时立即刷新。在省电与关闭模式下,文字随曲线更新。

可见范围与纹理缓存

栅格器先把线段裁到可见时间窗,两侧各留八分之一个窗口的滚动余量,再计算虚线、描边与位图尺寸。即使两次采样相隔数天,位图宽度仍由显示区域决定。只为可见曲线、填充和滤波边缘分配纹理行。侧栏预览被裁到视口外时保留其裁剪范围,重新进入视口后再绘制。

单张位图每边最多 16,384 个纹素,按 BGRA 像素和并行绘制所需的遮罩预留最多 128 MiB。超大视口逐档降低栅格密度。所有图表的在途构建和等待界面接收的结果共用 192 MiB 额度,空间释放后继续绘制。Windows 为超出常规图集页的彩色长条纹理按 64 个纹素对齐分配页面。移除最后一个图块后,页面退出活动图集。同一批上传里,物理尺寸相同的新图块可复用这张纹理及其着色器资源视图。最多暂存 8 页、合计 16 MiB,开始呈现时释放剩余空页。窗口隐藏、尺寸变化或图形设备重建时也会清空这些页。

Windows 仅在绘制矢量路径时建立全窗口的四倍多重采样纹理及其解析目标。场景移除路径、窗口隐藏或调整尺寸后释放这对资源,后续路径按当前视口重建。

数据、量程、线宽、颜色或显示密度变化时,后台按两倍设备像素密度栅格化。纹理左缘对齐到时间轴的整纹素位置,同一时刻在后续采样中保持相同的采样相位。Windows 保留预乘颜色,按目标像素的覆盖面积做二维过滤,图外按透明像素处理。填充遮罩按整张图的高度从顶部序列不透明度(默认 30%)线性降到底部的零。

大纹理按横条并行绘制,每 128K 像素使用一个线程,最多八个。每张图的同一组序列最多有一个在途任务。首次显示时等待新纹理与页面同帧呈现,上限为 250 ms。关闭动画时,曲线、填充、悬停读数与时间轴在新纹理就绪后一起切换。切换序列后丢弃过期结果。

页面切换与网格布局

页面与图表按目标位置布局。ChartLayer 复用各图的位置和裁剪范围,与页面在同一帧更新平移。性能页外框负责四条边,网格只画内部分隔线,缩放时分别把线宽和位置对齐到设备像素。卡片空间较小时,量程和时间标注移入图框;详情窗格使用同一位移和裁剪绘制内容与曲线。

首次显示逻辑处理器或 GPU 引擎网格时,先测量可用区域,再用实际尺寸绘制卡片和纹理。等待布局期间保留上一幅完整画面。CPU 总览与多核布局交叉淡入,核心类型筛选和窗口缩放通过 Window::with_live_transform 重排。卡片沿目标矩形移动,标题保持字号,边框保持线宽;过渡从第一幅可绘制的画面起算。开启减少动画时直接使用新排列。

Windows 合成

Windows 在符合 SDR 输出、绘制顺序和显存预算条件时,将移动曲线与核心条交给 DirectComposition。具备 HAGS 能力的 Windows 11 显卡在两种调度模式下均可复用缓存。CPU 总图、多核网格、进程概况与详情、设备预览、GPU 引擎和显存图都先将填充与图框底色合成,再与窗口材质混合。静态历史图同样在图框内绘制实色底面。窗口其余部分保留主题材质。

整帧重绘和图层滚动共用一个根节点与背景位图。采样更新、悬停或等待缓存时,渲染器在同一次提交中切换背景及子图层;恢复滚动后,波峰从当前帧的位置继续移动。最小化或隐藏时释放活动图层。设备或尺寸变化后重新检查缓存。

Windows 渲染器让 GPU 逐列检查曲线覆盖范围内的背景。相邻列逐行相同且完全不透明时,共用一段底色。文字边缘等密集区合用一个裁剪范围,纹理为每个屏幕列按八分之一像素存放多个滚动位置的曲线颜色,每个位置都已与该列底色合成。滚动时通过位移在相邻采样之间插值,文字和网格保持原位。各区段并排存放在不透明的 BGRA8 表面。背景透出窗口材质、填充会覆盖先绘制的动态图元或缓存超出预算时,曲线回到窗口场景中绘制。默认云母窗口和 --opaque-window 都使用这项优化。

静态提示框与曲线共存时,渲染器按图元类型分离移动内容和静态前景,并检查相交区域的绘制顺序。前景只栅格化其可见边界,纹理按 16 个纹素对齐并复用同尺寸分配。覆盖曲线的部分参与背景分段和相位像素合成;覆盖核心条或分段成本较高时,前景放入同一合成组。前景资源计入原有缓存预算,窗口隐藏、尺寸或设备变化时回收。普通底色、灰阶文字、下划线和图标使用此路径。

多核网格的裁剪区较多时,渲染器选取一列实际背景作为底图。GPU 逐行比较其余列,只为与参考列不同的网格线等像素写入虚拟表面。底图和这些修正列都存储已经混合好的颜色。滚动时每张符合条件的核心图只移动两层,同一列的修正始终显示在固定的屏幕位置。

局部重绘与显示节拍

Windows 渲染器缓存首个动画图元之前的静态画面,以原始像素复制复用,后续图元仍按原顺序混合绘制。新场景先比较静态图元的内容、顺序和裁剪范围:内容相同则继续复用;局部变化则清除并重绘其新旧边界,更新对应缓存像素。移动或删除的内容同时恢复原位置,动态曲线恢复范围包含上一帧的裁剪区。窗口尺寸、设备变化、大范围变化,以及包含路径、投影或外部表面的前缀使用完整绘制。静态快照最多保留 20,000 个图元,隐藏窗口时释放。

首次完整绘制即标记曲线和核心条的动态范围,柱条记录随绘制排序重新对应。新场景的静态内容、图像资源和柱条样式均相同时,沿用合成树并更新位置;鼠标移动触发的通知由实际像素变化决定重绘范围。

悬停底色等变化落在所有动态图层范围之外时,仅更新合成树对应的背景矩形,同时提交当前曲线位置。与曲线相交的内容继续重建所需缓存,以保持遮挡关系。

量程过渡通过已有纹理的高度和位置表现。量程或相位缓存超出预算时,在符合条件的裁剪区更新曲线表面。进程概览、详情和性能页共用这一路径。具体的预算与像素覆盖边界见 Windows 渲染器补丁。

量程过渡和相位缓存超出预算时,符合条件的曲线可在各自的裁剪区内重绘,再更新同一合成组中的不透明表面。底色经 GPU 检查后从静态缓存复制,曲线使用原有面积采样;其他图表保留各自的缓存。过渡结束后恢复位置更新,预算回退则持续复用同尺寸的局部纹理和表面。两类缓存共用显存上限,替换时先释放无法复用的表面,隐藏、尺寸或设备变化时清理。

两倍纹理密度的稳态区域使用四个等权重线性样本,省去逐像素计算通用面积权重;缩放过渡和纹理边缘继续按实际覆盖面积配权。两个分支共用预乘颜色与透明边界规则。

跨越静态与动画边界的绘制批次按原顺序拆分,动画帧仅恢复、重画并提交受影响区域。柱形收缩或曲线平移时仍覆盖完整裁剪范围,避免残影;采样和窗口变化重新核对绘制顺序、边界和资源。

分数缩放下,裁剪范围向外取整后可能比图像边界多出一个像素。背景合成着色器覆盖整个裁剪范围,图像外的像素从静态缓存恢复,因此保留该合成路径;区域重叠与不支持的图元仍按原条件回退。

分离的图表区域分别复制和提交,同一行或列的区域合并以控制 GPU 命令数量。未变化的字形、阴影、下划线实例及视口参数保留在 GPU 缓冲区中;新场景、窗口尺寸或设备变化会更新相应数据。

网格随静态背景缓存,核心条绘制在曲线之后。独立的曲线区域可直接读取背景并按相同的覆盖率混合;区域重叠或纹理暂不可用时,改用背景复制和常规混合。两条路径共用纹理密度、线宽和采样规则。像素对照时,曲线合成帧的 8 位通道允许最多两个色阶的舍入差,其他重绘最多一个色阶。

Windows 11 优先用合成器时钟驱动动画。Windows 10 使用 DwmFlush。显示器关闭或等待失败时按刷新间隔调度。交换链按一个显示周期提交,绘制开始时确认当前请求,让绘制期间到达的下一次同步信号继续生效。见合成器时钟和 Present1 同步间隔。

历史曲线

切换范围时查询截至当前时刻的最新窗口。1 小时、6 小时、24 小时与 7 天窗口分别每 10 秒、1 分钟、4 分钟和 5 分钟前移。所选时刻仍在窗口内时保留读数和进程列表,超出窗口后回到最新。单击与键盘导航选择屏内数据点,Esc 取消选择。实时刷新暂停期间仍记录历史。

序列查询和时刻查询各自最多有一个在途请求。过期回复丢弃后补发当前查询,新窗口的曲线纹理就绪后一起切换。各速率的量程如下。

速率量程

磁盘与网络的曲线纵轴选择覆盖当前时间窗峰值的最小档位。进程页概况、性能页大图及网络侧栏预览、历史曲线共用同一规则;磁盘侧栏的活动率图保持 0–100%。量程变化沿用曲线动画的过渡设置。

类型最小档位及后续档位
磁盘传输速率100 KB/s、200 KB/s、500 KB/s、1 MB/s、10 MB/s、50 MB/s、100 MB/s、200 MB/s、500 MB/s、1 GB/s、10 GB/s……
网络吞吐量(比特)100 Kbps、500 Kbps、1 Mbps、5 Mbps、10 Mbps、50 Mbps、100 Mbps、500 Mbps、1 Gbps、5 Gbps……
网络吞吐量(字节)100 KB/s、500 KB/s、1 MB/s、5 MB/s、10 MB/s、50 MB/s、100 MB/s、500 MB/s、1 GB/s、5 GB/s……

磁盘从 MB/s 起,每级单位采用 1、10、50、100、200、500;网络从 Mbps 或 MB/s 起,每级单位采用 1、5、10、50、100、500,随后进入更大的单位。网络切换单位时保留这组数字档位,按实际吞吐量重新选档;数据换算仍按每字节 8 比特计算。字节单位按 1024 进位,比特单位按 1000 进位。功耗等其他动态量程继续使用整数或整十数上限。