Looking Glass IDD 配置指南:模式列表、默认刷新率、渲染偏好与共享内存约束详解
音视频图形学【免费下载链接】LookingGlassAn extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.项目地址https://gitcode.com/gh_mirrors/lo/LookingGlass点击查看免费下载导读本文围绕 Looking Glass 项目中 Windows 虚拟显示驱动 IDDIndirect Display Driver的配置体系展开以官方文档 doc/idd_configuration.rst 为骨架结合 LGIddHelper 配置窗口、CSettings 注册表读写、CDisplayConfiguration 模式过滤与 CLGMPFrameCaps 共享内存容量计算等源码实现系统讲解如何打开配置界面、编辑显示模式、设置默认刷新率、管理渲染偏好以及如何在 IVSHMEM 共享内存不足时正确扩容。读完本文你将能够独立完成 IDD 的显示模式与性能偏好调优并能依据底层机制定位模式被过滤分辨率被拒绝等问题。打开配置窗口从系统托盘进入 IDD 设置IDD 驱动安装后Windows 通知区域会出现Looking Glass (IDD)图标。右键点击该图标并选择Open configuration即可打开配置窗口窗口类名为LookingGlassIddConfig见 CConfigWindow.cpp。托盘图标及其悬停提示同时承担状态指示灯的角色通过图标外观可以直观判断驱动当前使用的是GPU 硬件加速还是软件处理software processing。当 IDD 因缺少合适的渲染适配器而回退到软件模式时图标会显示相应提示默认还会弹出无 GPU警告通知对应 CNotifyWindow.cpp 的通知逻辑。配置窗口在启动时会从注册表加载全部设置CConfigWindow.cpp显示模式列表Modes默认刷新率DefaultRefresh无 GPU 警告开关NoGPUWarning独占监视器开关ExclusiveMonitor强制全帧直接拷贝ForceFullDirectCopy强制间接拷贝ForceIndirectCopy这些设置全部存储在注册表键HKLM\SOFTWARE\LookingGlass\IDD下见 CSettings.h其中模式列表以REG_MULTI_SZ多字符串保存布尔偏好以REG_DWORD保存DefaultRefresh同时兼容REG_DWORD整数值 Hz与REG_SZ文本刷新率如119.970两种类型见 CSettings.cpp。显示模式列表Display modes模式列表控制 Windows 为 Looking Glass 虚拟显示器可用的分辨率与刷新率集合。列表项以宽x高刷新率的格式显示例如1920x108060.000。编辑、新增、删除与恢复默认操作方法源码对应编辑已有模式选中列表中的模式修改下方的 Width / Height / Refresh 输入框点击UpdateCConfigWindow.cpp新增模式选中列表首项add new在下方输入框中填写宽、高、刷新率点击Update同上m_modes-emplace_back()追加新模式删除模式选中模式后点击DeleteCConfigWindow.cpp恢复默认点击Load default用标准模式表重建整个列表CConfigWindow.cpp标记首选勾选选中模式的prefer复选框CConfigWindow.cpp标准模式表定义在 DefaultDisplayModes.h共 38 个分辨率覆盖从 640×480 到 7680×43208K的常见规格默认首选模式为数组下标 19即 1920×1080DefaultPreferredDisplayMode 19。点击Load default时源码会直接调用m_settings.getDefaultModes()取回这套内置标准表CConfigWindow.cpp。参数取值范围输入框与底层解析逻辑共同施加以下约束刷新率最多可包含三位小数如输入119.970而非四舍五入成120合法范围23.900 Hz ~ 1000.000 Hz。刷新率在内部以百分之一微赫兹100µHz整数表示缩放系数为LG_REFRESH_RATE_SCALE 10000见 RefreshRate.h即119.970在内部存储为1199700。宽度640 ~ 16384 像素。高度480 ~ 16384 像素。这些边界由 ParseModeString 中的 sanity check 强制执行宽度小于 640、高度小于 480 或任一方超过 16384 的模式会被直接判定为非法并拒绝解析。窗口代码同样会在Update时调用LGParseRefreshRate校验刷新率文本解析失败则本次修改不生效CConfigWindow.cpp。保存与生效时机模式列表的编辑不会立即生效。完成全部修改后点击Save reload driver将整个模式列表写入注册表Modes值REG_MULTI_SZ将默认刷新率写入注册表DefaultRefresh通过命名管道向 helper 服务发送设置变更通知sendSettingChange触发驱动重新加载CConfigWindow.cpp。驱动重载会移除并重新创建虚拟监视器因此显示器可能短暂闪烁。若想放弃尚未保存的模式与默认刷新率修改点击Revert即可从注册表重新读回已保存的配置CConfigWindow.cpp。默认刷新率Default refreshDefault refresh是一个独立于模式列表的设置有两大用途动态分辨率请求客户端请求 IDD 创建动态分辨率时新模式使用该刷新率重建标准模式表点击Load default时38 个标准分辨率统一使用该刷新率填充。修改默认刷新率不会改写模式列表中已经保存的刷新率。但需要注意的是在重载驱动后已存在的动态分辨率ExtraMode见下文会保留原有分辨率、同时自动采用新的默认刷新率——这个行为由 CDisplayConfiguration::ReloadSettings 实现它检测到ExtraMode的刷新率与当前默认刷新率不一致时会主动更新注册表中的ExtraMode记录。客户端动态分辨率请求默认刷新率与客户端分辨率的联动机制如下客户端配置项win:setGuestRes注册表/配置文件中的布尔开关config.c在客户端窗口尺寸变化时自动发起动态分辨率请求前提是当前传输通道支持LG_TRANSPORT_FEATURE_WINDOW_SIZE特性core.c。默认在来宾端服务器支持该特性时启用。手动触发在客户端按住Escescape键的同时按下键即可按客户端当前窗口尺寸请求一次分辨率变更。该快捷键注册于 keybind.c其实现向客户端内部消息队列投递LG_MSG_WINDOWSIZE消息消息携带当前窗口的宽高若传输不支持该特性客户端会弹出guest doesnt support this feature提示。客户端配置中win:autoResize-a与win:setGuestRes互斥二者同时启用会触发警告config.c。在 IDD 侧来自客户端的KVMFR_MESSAGE_WINDOWSIZE消息会被 CLGMPTransport 解析并路由到OnSetResolution回调。随后 CDisplayConfiguration::SetResolution 会执行如下流程用请求的宽高 当前默认刷新率构造一个临时模式调用caps.CanUseMode检查该模式能否装入共享内存若可以将模式写入注册表ExtraMode值REG_SZ格式为宽x高刷新率*后缀标记首选见 SetExtraMode并重建模式列表。渲染偏好Preferences偏好区包含四个复选框。与模式列表不同偏好复选框在点击的瞬间即被保存REG_DWORD无需等待Save reloadCConfigWindow.cpp。Make LG the only monitor独占监视器默认启用。启用后IDD helper 会在必要时强制让 Looking Glass 显示器成为 Windows 唯一的活动监视器拓扑恢复由 helper 自动完成。如果你刻意要在来宾内同时使用其他显示器应关闭此选项。需要特别注意的是关闭选项只是停止未来对拓扑的强制并不会自动恢复 Windows 此前已禁用的显示器——那些被禁用的显示器需要你手动重新启用。Disable no GPU warning禁用无 GPU 警告用于抑制 IDD 回退到软件处理时弹出的通知。它不会启用 GPU 加速也不会改变当前活动的渲染适配器纯粹是静默警告。软件处理下驱动会检查CSettings::ShouldLogStatistics()之类的开关来控制日志输出CFrameScheduler.cpp。Force full direct frame copies强制全帧直接拷贝用于规避部分 GPU 驱动在向共享传输堆transport heap写入部分损坏的 D3D12 拷贝时的故障。启用后GPU 对每个直接帧都做全帧拷贝而 readback/间接传输路径仍继续使用部分损伤partial damage拷贝。代价是 GPU 与共享内存带宽显著上升因此除非实际遇到画面损坏否则保持禁用。该设置由 CHardwareFrameProcessor 在构造时读取并记录日志。修改该选项会触发驱动重载。Force indirect copy强制间接拷贝关闭对共享传输堆的 D3D12 直接访问改为每一帧都经过一个 CPU 映射的 readback 资源完成拷贝。仅用于规避GPU 驱动破坏直接传输写入的兼容性问题它额外引入一次 CPU 拷贝吞吐量显著下降。该设置优先于直接拷贝偏好——在 CD3D12Device::Init 中m_indirectCopy的判定为!directMemory || s_directHeapFailed || forceIndirectCopy只要强制间接拷贝为真无论直接堆是否可用都走间接路径。修改该选项同样会请求驱动重载。软件处理Software processing当 Windows 中没有合适的渲染适配器可用时IDD 可以退化为软件处理模式。软件模式能够提供显示输出但存在三项明确限制速度更慢无法提供可预测的高刷新率节奏cadence仅支持 SDR不支持 HDR 信号链路。判断当前处于哪种模式、以及驱动选中了哪块渲染适配器最可靠的方法是查看 IDD 日志。日志中会明确记录所选适配器与软件处理是否激活此外如前文所述托盘图标外观也会反映 GPU 加速与软件处理的状态。无法装入共享内存的模式Modes that do not fit in shared memory这是配置中最容易踩坑、也最能体现 IDD 底层设计的一节。启动时的模式过滤IDD 驱动在启动时以及重载设置时会对模式列表做两层过滤CDisplayConfiguration::LoadModes合法性过滤宽高或刷新率为 0 的非法条目直接丢弃容量过滤调用caps.CanUseMode()检查该模式能否装入配置的 IVSHMEM 共享内存区域装不下的模式被丢弃并记录Filtering unsupported ... mode日志。如果所有模式都被过滤掉newModes为空驱动会记录No configured display modes are supported并拒绝启动虚拟监视器。此外若原本的首选模式被过滤代码会把第一个保留下来的模式提升为首选保证列表中始终存在合法偏好CDisplayConfiguration.cpp。动态分辨率被拒绝当客户端发起的动态分辨率请求过大、超出共享内存容量时CanUseMode 返回失败SetResolution判定为TOO_LARGE并拒绝该请求CDisplayConfiguration.cpp。helper 会通过托盘通知报告所需的最小 IVSHMEM 大小通知文案为The requested resolution宽x高requires at leastNMiB of configured frame capacity.对应实现见 CNotifyWindow::handleResolutionRejected。容量计算的底层原理每帧所需的共享内存由 CalculateFrameSize 计算行距pitch 分辨率宽度 × 每像素字节数FRAME_BYTES_PER_PIXEL并向上对齐到D3D12_TEXTURE_DATA_PITCH_ALIGNMENT帧大小 pitch × 高度再计入 D3D12 资源放置对齐D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT与帧缓冲池数量m_bufferCount得到总需求requiredSize若requiredSize 容量RecommendedSizeMiB 会将其换算为大于所需的最小 2 的幂 MiB 数向上取整到 1、2、4、8、16 MiB……作为提示值。这正解释了文档所述helper 报告的是最小 2 的幂 IVSHMEM 大小。扩容操作与注意事项当出现模式被过滤或分辨率请求被拒绝时正确做法是在 VM 配置libvirt / QEMU 参数中增大 IVSHMEM 区域大小重启虚拟机IDD 在启动时读取新的容量CIVSHMEM::Open通过IOCTL_IVSHMEM_REQUEST_SIZE获取实际大小并记录IVSHMEM opened, size: N MiB见 CIVSHMEM.cpp。扩容后通常无需再次执行 helper 重载因为驱动是在启动时读取容量。但注意CIVSHMEM::GetUsableSize()会从总容量中扣除 KVMFR 恢复区域KVMFR_R_REGION_SIZE帧数据实际可用的空间小于 IVSHMEM 总大小见 CIVSHMEM.h规划容量时需留出这部分余量。最后强调一点容易误解的事实分配超出实际需求的共享内存并不能提升性能——它只是多预留了宿主 RAM。共享内存只决定最多能承载多大的帧与帧率、延迟等性能指标无关。关键配置项速查配置项注册表值HKLM\SOFTWARE\LookingGlass\IDD类型默认值生效方式显示模式列表ModesREG_MULTI_SZ内置 38 个标准模式Save reload driver动态分辨率模式ExtraModeREG_SZWxHRR*为首选无客户端请求时即时生效默认刷新率DefaultRefreshREG_DWORD/REG_SZ60 HzSave reload driver独占监视器ExclusiveMonitorREG_DWORD1启用点击即保存禁用无 GPU 警告NoGPUWarningREG_DWORD0显示警告点击即保存强制全帧直接拷贝ForceFullDirectCopyREG_DWORD0禁用点击即保存并重载驱动强制间接拷贝ForceIndirectCopyREG_DWORD0禁用点击即保存并重载驱动参考实现与进一步阅读配置窗口交互CConfigWindow.cpp、CConfigWindow.h注册表设置读写CSettings.cpp、CSettings.h标准模式表与默认首选模式DefaultDisplayModes.h模式过滤与动态分辨率CDisplayConfiguration.cpp共享内存容量计算CLGMPFrameCaps.cppIVSHMEM 内存映射CIVSHMEM.cpp客户端动态分辨率win:setGuestRes与 Esc快捷键core.c、keybind.c、config.c刷新率解析与格式化RefreshRate.h、RefreshRate.cpp赞分享音视频图形学【免费下载链接】LookingGlassAn extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.项目地址https://gitcode.com/gh_mirrors/lo/LookingGlass点击查看免费下载相关推荐Looking Glass 共享内存IVSHMEM配置指南从标准共享内存到 KVMFR 内核模块Looking Glass 共享内存IVSHMEM配置指南从标准共享内存到 KVMFR 内核模块 Looking Glass 是一款面向 VGA PCI音视频图形学Looking Glass 完整安装指南VM 共享内存、Windows IDD 与 Linux 客户端部署Looking Glass 完整安装指南VM 共享内存、Windows IDD 与 Linux 客户端部署 本文是 Looking Glass 项目的官方安装音视频图形学Looking Glass IDD 安装、升级与配置完全指南Windows 客户机虚拟显示器实战Looking Glass IDD 安装、升级与配置完全指南Windows 客户机虚拟显示器实战 本文以 Looking Glass 官方文档 install音视频图形学上一篇Claude Code 中的 Opus 4.5 迁移指南从 Sonnet 4.x / Opus 4.1 平滑升级模型字符串与提示词下一篇StarRocks hll_empty 函数详解为 HLL 列生成空值以补齐导入/插入默认值创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

结论标题 + 结构化证据:用 Kun PPT 工具链打造专业级管理汇报演示文稿

结论标题 + 结构化证据:用 Kun PPT 工具链打造专业级管理汇报演示文稿

人工智能AI Agent自主智能体桌面应用MCP Clients 【免费下载链接】Kun Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI. 项目地址: https://gitcode.com/gh_mirrors/de/Kun 点击查…

2026/10/12 4:53:53 阅读更多 →
Rust闭包捕获与内存管理:长期运行程序的避坑指南

Rust闭包捕获与内存管理:长期运行程序的避坑指南

Rust 的闭包捕获列表语法,是我这几年在长期运行的服务类项目里反复踩坑又反复受益的地方。它看起来只是||和move ||的差别,但决定了闭包到底握住了哪些内存、握多久、能不能安全逃出当前函数。长期运行的程序里,只要有一个闭包把不该持有的数…

2026/10/12 4:53:53 阅读更多 →
为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。

为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。

1.工具准备 主要为 POP4.2 项目 的 Python 脚本的运行做准本 1.1 安装Python 用华为的镜像站,下载速度比官方网站会快些。按照项目要求安装版本不低于 Python3.7 的版本进行安装即可。这里我用的是Python 3.10 1.2 安装git 这里我也用的是华为的开源镜像站下载的…

2026/10/12 4:52:52 阅读更多 →

最新新闻

开源+私有化:打造能主动干活的企业AI工作伙伴

开源+私有化:打造能主动干活的企业AI工作伙伴

1. 从"只会聊天"到"能干活":企业AI落地的真实断层在哪过去两年,我参与过好几个企业内部的AI助手项目,几乎每一个都经历过同样的尴尬:上线第一周大家图新鲜,问天气、写周报、翻译邮件,用…

2026/10/12 6:24:44 阅读更多 →
Hermes Agent 实战指南:从安装配置到自主任务执行

Hermes Agent 实战指南:从安装配置到自主任务执行

1. 认识 Hermes Agent:它到底能帮你干什么第一次听到“Hermes Agent”这个名字,我脑子里冒出来的是希腊神话里那个脚底生风的信使。后来实际用上这个工具,发现这名字起得还挺贴切——它确实是个帮你来回奔走、传递指令、把杂活干完的“跑腿者…

2026/10/12 6:24:44 阅读更多 →
VMware Workstation从入门到排错:虚拟机练手全攻略

VMware Workstation从入门到排错:虚拟机练手全攻略

坦白说,我最初接触VMware并不是因为工作需求,而是被折腾Linux系统的热情逼的。电脑上装个双系统总得来回重启,Windows和Ubuntu切换一次要等好几分钟,写一行配置还要惦记着别把宿主机搞崩。后来换成VMware Workstation跑虚拟机&…

2026/10/12 6:24:44 阅读更多 →
TortoiseSVN实战指南:从安装避坑到分支合并与钩子配置

TortoiseSVN实战指南:从安装避坑到分支合并与钩子配置

简介:面向 Windows 开发者的 SVN 客户端工具资料包,围绕小乌龟 TortoiseSVN 的实际使用场景展开,适合刚接触版本控制的新手,也适合需要快速配置仓库和规范提交流程的团队开发人员。资料从安装与认证配置讲起,先后梳理检…

2026/10/12 6:24:44 阅读更多 →
Go中invalid receiver type报错详解与修复

Go中invalid receiver type报错详解与修复

上午编译项目时,被一行报错拦住了:dao/streamer_business.go:75:10: invalid receiver type StreamerRequest (pointer or interface type)。第一反应有点懵:StreamerRequest 明明是我在这个文件里自己定义的类型,字段都写好了&am…

2026/10/12 6:24:43 阅读更多 →
知识工作插件实战指南:选型逻辑、配置思路与工作流搭建

知识工作插件实战指南:选型逻辑、配置思路与工作流搭建

我一直觉得,“knowledge-work-plugins”这个组合词,比我们常说的“效率工具”更能概括知识工作者的真实处境。知识工作不是简单的打字和搜索,它的日常是找资料、读文章、提炼观点、组织素材、写稿,再到维护自己的知识库。这一整串…

2026/10/12 6:23:43 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →