为什么 iPhone 能跑 Windows 3A 游戏?深度解析 Madeira 的 Metal 特性矩阵:Mesh 着色器、光追与 BC 压缩
为什么 iPhone 能跑 Windows 3A 游戏深度解析 Madeira 的 Metal 特性矩阵Mesh 着色器、光追与 BC 压缩【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/MadeiraMadeira 是一个让 iPhone 免越狱直接运行 Windows PC 游戏的开源项目iOS 端需借助 StikDebug 启用 JIT它把 Windows 的 Direct3D 调用逐层翻译成 Apple GPU 的 Metal 指令。而翻译能不能翻对关键就在它的Metal 特性矩阵Mesh 着色器网格着色器、硬件光追硬件光线追踪和 BC 纹理压缩三类能力如何被利用。本文带你快速看懂这三项特性在 Madeira 中分别处于什么状态。特性矩阵总览一张表看懂支持程度特性支持状态实现方式Mesh 着色器含几何/曲面细分管线✅ 已实现DXIL → 转换器 mesh 管线模拟硬件光追❌ 暂不支持查询接口明确返回不支持BC 压缩纹理BC1–BC7✅ 完整支持原生 Metal 格式映射 软件解码兜底运行时 DXIL 着色器编译✅ 已实现苹果官方 Metal Shader ConverterD3D12 运行时源码位于 madeira-d3d12/src/pe/madeira_d3d12.c其开发进度记录在 madeira-d3d12/README.md。Mesh 着色器把曲面细分和几何着色器翻译成 Metal mesh 管线Mesh 着色器是 D3D12 的新式管线阶段。iPhone 的 GPU如 A15、A17 Pro原生支持 Metal mesh shader但 Windows 游戏里大量代码是曲面细分Hull/Domain和几何着色器GS这类老阶段。Madeira 的做法是让这些老管线借用 Metal 的 mesh 管线运行。从 madeira-d3d12/src/madeira_ir_abi.h 的接口注释可以看到三条实现路径ml1083 曲面细分Hull/Domain 着色器对被编译成一条 object/mesh 管线——object 函数负责顶点 hull控制点生成mesh 函数负责 domain曲面求值最终产物由 Metal mesh 管线发射。ml927 几何着色器GS 没有原生对应物所以整个 GS 管线通过转换器的mesh 模拟mesh emulation运行VS 作为 object 阶段GS 作为 mesh 阶段。ml1147 DXBC 几何走 DXBC 后端的 mesh 模拟路径顶点着色器和几何着色器分别编译为 object/mesh 两个库。运行时的统计日志见 madeira-d3d12.c 中的ml1050 residency set日志行会汇报多少条曲面细分管线被构建为 mesh 管线、多少 draws 走了 mesh threadgroups 路径方便排查兼容性。硬件光追目前明确不支持但留有接口关于硬件光追需要给出一个诚实的结论Madeira 目前没有实现硬件光线追踪。在 madeira-d3d12/src/pe/madeira_d3d12.c 中有一段关键注释UE 5.0 这类引擎会专门查询 Feature List4 的 ray tracing 能力位而 Madeira把所有光追能力位都报告为 off。这是一个刻意的工程决策——告诉引擎这里没有光追让游戏自动回退到光栅化渲染而不是让引擎尝试调用不存在的硬件。值得注意的是底层的 metal_irconverter 和 ir_raytracing.h 头文件里已经包含了完整的 ray tracing 管线编译接口IRCompilerSetRayTracingPipelineConfiguration、hit/miss/any-hit 着色器掩码等说明编译工具链本身具备光追着色器的转换能力只是 D3D12 前端尚未接上。对普通用户而言光追游戏可以玩但光追效果会被关闭或回退。BC 压缩纹理从 BC1 到 BC7 的全格式支持PC 游戏几乎全部使用 BCBlock Compression压缩纹理这是显存占用和带宽的关键。Metal 原生支持 BC 家族像素格式Madeira 在 madeira-d3d12.c 中把 DXGI 格式完整映射到了 Metal 格式DXGI 格式映射到的 Metal 格式BC1含 sRGBWMTPixelFormatBC1_RGBA/_sRGBBC2、BC3含 sRGBWMTPixelFormatBC2_RGBA…BC3_RGBA_sRGBBC4RUnorm/RSnorm、BC5RGWMTPixelFormatBC4_RUnorm…BC5_RGSnormBC6HUF16/SF16、BC7含 sRGBWMTPixelFormatBC6H_RGBUfloat…BC7_RGBAUnorm_sRGB同时还处理了格式块大小BC1/BC4 为每块 8 字节其余 BC 格式为 16 字节4×4 像素块。更保险的一层兜底DXMTD3D9–11 转 Metal 层内置了一个纯软件的 BCn 解码器专门应对设备不支持 BC 硬件采样的情况——把压缩块在上传时解码为 RGBA。这个解码器的正确性由 tests/dxmt/bcn-host-test.cpp 在构建机上逐块校验覆盖 BC1 四色/穿透模式、BC2 显式 alpha、BC3 的 8 值与 6 值插值表、BC4/BC5 标量块以及奇数尺寸贴图的边界裁剪等容易出错的路径。构建脚本见 tests/dxmt/build-bcn-host-test.sh。运行时 DXIL 编译整个矩阵的地基以上所有特性都建立在同一个地基上运行时 DXIL → Metal 着色器转换。游戏自带的 DXIL 着色器在创建管线时由苹果官方 Metal Shader Converter 即时编译为 metallib转换器头文件见 madeira-d3d12/third_party/metal-shader-converter/。实测数据记录于 madeira-d3d12/README.mdM4 Max首次转换约 1.0 ms缓存重编译 0.4 msiPhoneA15首次 16.8 ms缓存后 0.6 ms转换结果带缓存键GPU 家族 部署目标 根签名跨平台结果不共享测试覆盖从 26/26 的 canary 一路到 90/90 的完整管线验证均通过 vphone VM 与真机 A15 双重验证。总结这套特性矩阵意味着什么老游戏D3D9–11体验最完整DXMT 软件 BC 解码双保险纹理和几何路径都被逐块验证⚙️D3D12 游戏可用性高Mesh 着色器模拟让曲面细分、几何着色器管线照常工作纹理全格式直采光追暂时缺席引擎查询会得到不支持并走光栅化回退编译工具链已就绪属于接下来会接上的状态。想了解更完整的构建与验证流程可以阅读 docs/BUILDING.md 和 madeira-d3d12/README.mdD3D12 ABI 的接口定义在 madeira-d3d12/src/pe/ 目录下shader 测试样例cube、texcube 等位于 madeira-d3d12/shaders/。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Julia 1是什么?一文读懂把上下文变成决策的144M参数决策模型

Julia 1是什么?一文读懂把上下文变成决策的144M参数决策模型

Julia 1是什么?一文读懂把上下文变成决策的144M参数决策模型 【免费下载链接】Julia-1 项目地址: https://ai.gitcode.com/hf_mirrors/SupersonicLabs/Julia-1 Julia 1 是 Supersonic Labs 发布的第一个决策模型(decision model)&…

2026/10/4 4:01:03 阅读更多 →
怎么把aac格式转变为mp3?5种方法操作教程,容易学会

怎么把aac格式转变为mp3?5种方法操作教程,容易学会

上周同事发来一个录音文件,aac格式的,我用电脑自带的播放器打开,结果弹出来一个框,说"不支持该格式"。换了个播放器还是不行。当时我的第一反应就是——得把它转成mp3。 说实话,aac格式如何转变为mp3这个问…

2026/10/4 4:01:03 阅读更多 →
深入理解 JavaScript 函数元数(Function Arity):从 length 到柯里化与变参转换

深入理解 JavaScript 函数元数(Function Arity):从 length 到柯里化与变参转换

教程文档 【免费下载链接】30-seconds-of-code Coding articles to level up your development skills 项目地址: https://gitcode.com/gh_mirrors/30/30-seconds-of-code 点击查看 免费下载 函数元数(arity)指一个函数期望接收的参数个数。…

2026/10/4 4:01:03 阅读更多 →

最新新闻

单片机AT指令非阻塞配置模块模板:状态机与超时重试机制

单片机AT指令非阻塞配置模块模板:状态机与超时重试机制

搞单片机开发的朋友,十有八九都跟AT指令打过交道。WiFi模块要配ESP8266,蓝牙模块要配HC-05,4G模块要配EC200,GPS模块要配ATGM336H,甚至不少传感器模块都爱用AT指令来设置参数。AT指令本身逻辑很简单,就是“…

2026/10/4 4:41:25 阅读更多 →
Xilinx FPGA上MIPI DPHY接口实战:从CSI-2采集到DSI显示的全流程解析

Xilinx FPGA上MIPI DPHY接口实战:从CSI-2采集到DSI显示的全流程解析

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

2026/10/4 4:41:25 阅读更多 →
复合光源仿真实用指南:VirtualLab Fusion建模全流程解析

复合光源仿真实用指南:VirtualLab Fusion建模全流程解析

做光学系统仿真的人,早晚都会卡在光源这一步。单色平面波确实能解决很多衍射、干涉问题,可一旦你开始处理真实光源——白光LED、多模激光二极管、宽谱超连续谱——就会发现结果怎么都对不上实验,干涉条纹宽度不对、对比度偏大、色散效应完全看…

2026/10/4 4:41:25 阅读更多 →
STM32电梯面板开发实战:从硬件选型到RS485通讯与状态机设计

STM32电梯面板开发实战:从硬件选型到RS485通讯与状态机设计

前阵子帮朋友处理一栋老写字楼的电梯召唤盒问题时,我蹲在门口拆开那台用了十几年的设备,里面是一排继电器和一堆已经发黑的触点。电梯每停一层,盒子里的继电器就噼里啪啦响一阵,楼层指示灯用的小灯泡也黑了两只。我当时就跟朋友说…

2026/10/4 4:41:25 阅读更多 →
分支功能:实现脚本多场景覆盖

分支功能:实现脚本多场景覆盖

分支功能:实现多场景覆盖主线描述脚本要做的功能,分支描述该功能在各条路径上的执行情况。 一份代码,配上 N 个分支场景,得到 N 份测试结论。 项目地址:https://qingxun.online一、问题:脚本在正常情况下通…

2026/10/4 4:41:25 阅读更多 →
Oil Motion三大交付路线全解析:烘焙视频、绿幕视频与透明雪碧图如何自动选型

Oil Motion三大交付路线全解析:烘焙视频、绿幕视频与透明雪碧图如何自动选型

Oil Motion三大交付路线全解析:烘焙视频、绿幕视频与透明雪碧图如何自动选型 【免费下载链接】oil-motion 设计并实现随滚动、拖动、指针或状态变化响应的网页动画,覆盖素材、时间轴和运行时。 项目地址: https://gitcode.com/gh_mirrors/oi/oil-motio…

2026/10/4 4:40:24 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →