sigmaco/qwadro
GitHub: sigmaco/qwadro
Qwadro 是一个基于 C17 的跨平台执行生态系统和中间件标准实现,旨在通过统一的低级 API 架构解决 POSIX 的局限性,为高性能图形、多媒体和嵌入式系统软件提供可移植的基础设施层。
Stars: 1 | Forks: 3

# Qwadro 执行生态系统
Qwadro 是由 **SIGMA Technology Group** 设计的一系列标准的名称,这些标准规定了***软件工程基础设施***,定义了操作系统与应用软件之间的接口。Qwadro 的主要目标是确保为一个符合 Qwadro 标准的系统编写的应用程序能够轻松移植到另一个系统,而无需考虑底层硬件或特定的操作系统实现。这种可移植性是通过标准化应用程序用于与操作系统交互的接口、实用程序和库来实现的。Qwadro 提供了一个共同基础,促进了互操作性,并减少了与特定平台开发相关的复杂性。遵守 Qwadro 标准简化了跨不同平台环境的软件开发、维护和部署。
Qwadro 背后的主要设计动力是解决 POSIX 的主要问题。虽然 POSIX 旨在规定操作系统的制造方式,但 Qwadro 旨在通过为 API 提供统一的架构来标准化中间件开发和部署,特别是桥接低级 C17 API 并跨各种平台对其进行抽象。这可以使其更容易在不同的操作系统上构建和部署软件,而无需过多担心特定平台的复杂性。
Qwadro 是数据驱动的,旨在处理分布式、联合系统。它不仅仅关注单个设备或本地系统,还促进了一个互联系统,在该系统中,数据和任务可以跨多个节点或服务进行管理,使其成为基于云、边缘计算或分布式系统的潜在骨干。术语“联合执行”表达了一种协作执行模型,其中组件以分散或分布式的方式协同工作,这对于需要高可扩展性和灵活性的大规模应用程序可能是有益的。
中间件通常帮助应用程序通信和管理资源,而无需直接与 OS 交互。Qwadro 提供了一个中间件层,用于抽象系统软件,提供标准化的服务、API、驱动程序和库,以提高性能并加速开发。这对于既需要高性能又需要平台可移植性的行业和用例来说非常理想,例如模拟、互动娱乐和多媒体(例如,游戏、AR/VR、视频处理)。
Qwadro 不是像 Qt 那样的单一框架;它是一个模块化中间件组件的生态系统,每个组件都旨在处理特定的平台方面(例如,图形、Shell、文件系统)。这些中间件层可以在编译后轻松交换或替换,从而允许动态更新或自定义。因此,按照设计,Qwadro 执行生态系统是软件基础设施的集合,旨在提供一组加速构建块,以构建主要针对计算机模拟、互动娱乐和多媒体用户体验的系统软件。Qwadro 构成了中间件、库、驱动程序和引擎的统一基础设施,持续集成,提供资源、设备、服务,并以直接、统一的方式抽象操作系统和平台。它根据 Qwadro 许可作为开源发布。
随处可见的“公共测试版本”说明了为什么 Qwadro 主要是一个私人项目,旨在统一 SIGMA 过去、现在和未来项目的大部分代码库,主要是那些希望在 SIGMA 工程化的操作系统上运行的代码库,用于内部支持和使用,并服务于合作的其他部门和实体,也可能使 SIGMA 努力的历史和区域受众受益。
因此,基于 OpenGL 的 Draw I/O System ICD 目前并将继续得到维护,同时还有基于 Windows 7 的 User I/O System ICD。
“qwadro”和“afx”仓库之间的主要区别在于,“afx”是源代码形式的实现,而“qwadro”应该是预编译的部署。但这种区别目前还不是事实,因为该项目尚处于初期阶段。
## 加速框架实验版 (AFX)
**AFX**,即 **Acceleration Framework Experimental** 的首字母缩写,是 **Qwadro 执行生态系统** 的标准实现。Qwadro 是由 SIGMA Technology Group 设计的一系列标准的名称,用于规定软件工程基础设施。
这些标准使用 ISO C17 编写,并在联合执行生态系统(即 Qwadro 执行生态系统)中规定了低级、面向数据的组件及其相互通信协议。
该生态系统提供了一组加速构建块,用于构建高性能、通用和硬件加速的嵌入式系统软件,例如娱乐系统、游戏软件、计算机模拟和多媒体中心。
它本质上是一组软件基础设施,基于 Qwadro 开发的中间件、库、驱动程序和引擎都依赖于这些基础设施。
尽管名字如此,AFX 并不是一个应用程序框架,它被设计为其他 Qwadro 模块的基石。
AFX 旨在向其他 Qwadro 组件提供原始主机互操作性,例如 I/O、I/O MMU、文件处理、存储管理、内存管理工具、线程和同步、IRP、类、对象管理工具、设备管理等。
这就是为什么其他所有基础设施起初都是 AFX 的“扩展”。
用户应用程序完全可以使用 AFX 构建以避免与主机交互,但是,根据设计,AFX 并不想驱动用户应用程序。
用户不可避免地需要按照 Qwadro 的方法论设置其事件循环。AFX 将仅处理与其 API 对象相关联的事件。如果用户在 MMUX 基础设施之外创建了一个窗口,AFX 将完全忽略它。
Qwadro 是低级的、硬核的,并且在此阶段具有高度实验性(该项目实际上正在引导其自身的规范)。
任何用户都将被迫熟悉计算机的工作原理。
本质上,它是一个中间件,致力于提供一个虚拟化的主机平台。
希望在没有游戏引擎(或用 C 编写的游戏引擎/框架)的情况下制作游戏的用户应该去查看 [Raylib](https://github.com/raysan5/raylib) 或任何类似的项目。如果你想要一个稳定的多媒体 API,你应该去查看 [SDL](https://github.com/libsdl-org/SDL)。
Qwadro 起源于 RenderWare 内部,作为一个已停产的公共开源游戏引擎项目的一部分。
在某个阶段,RenderWare 平台被挂钩到 Qwadro 内部。
后来,随着它变得越来越低级、通用和强大,它被剥离出来,拥有了自己独立的存在。
这个新的独立阶段被称为“工程阶段 II”。
由于这种最初的纠缠,某些名称保持与 RenderWare 相似,并且正在开发一个名为 ARX 的 Qwadro 修正案新项目,以实现 RenderWare 与 Qwadro 生态系统的完全解耦。
## 高级视频图形扩展 (AVX)
一种现代的、经过整理的、重新定义的、正交的架构,具有 Vulkan 风格的 OpenGL Core 功能重构。
高级视频图形扩展 (AVX) 是对 **加速框架实验版 (AFX)** 的修正案,用一个完整的、可扩展的、硬件加速的视频图形基础层扩展了 Qwadro 执行生态系统。
AVX 由 SIGMA Technology Group 设计,旨在重新定义和稳定 OpenGL Core API 的功能。其中一部分以前被称为 SIGMA GL/2。
AVX 不是引入一个全新的图形 API,而是通过提供以下内容来重组、整理并使现有的 GL 功能面向未来:
- 统一的低级图形基础 (Qwadro 视频图形基础设施)
- 用于设备枚举、呈现和交换链管理的与平台无关的运行时
- 通过 AUX 项目提供的一致、确定性的上下文处理层
- 标准化的、兼容 ICD 的驱动程序接口模型
AVX 不是“又一个 Vulkan”包装器。相反,在 SIGMA 的软件工程集体看来,它是 OpenGL Core 5 本该成为的样子;一个现代化的、严格的、可预测的环境,保留了 GL 的优势,同时消除了数十年的历史设计债务。
主要的动机是避免包装较新的 API。想要更多功能的人应该直接使用 Vulkan。就是这样。
其他动机源于 OpenGL Core 中长期存在的问题,例如:
- 不一致或专有的上下文创建
- 跨供应商的未定义行为
- 扩展碎片化
- 缺乏严格的状态管理
- 驱动程序运行时与低级任务之间的分离薄弱
AVX 通过引入 **Qwadro 视频图形基础设施** 来解决这些问题,这是一个驱动程序实现者所针对的严格低级接口,而更高层则清晰地位于其之上。
### Qwadro 视频图形基础设施
**Qwadro 视频图形基础设施** 基于 **DXGI**,是 AVX 的基础层。
该基础设施提供:
- 统一的设备发现和枚举
- 与供应商无关的表面、缓冲区和内存接口
- 交换链创建和管理
- 呈现调度
- 同步和围栏原语
- 用于所有低级任务的标准化 DDI(设备驱动程序接口)
该层旨在具有确定性、跨平台性,并免受旧版 GL 模糊性的影响。
#### Qwadro Draw I/O 系统
**Qwadro Draw I/O System** 是一种客户端-服务器和主机-设备协作设计的混合模型。
它是传统 GL“引导”的现代化、模块化替代品,负责:
- 设备初始化
- 能力请求
- 渲染表面分配
- 状态和流水线准备
将类似 OpenGL Core 的前端桥接到 VGI DDI。
AVX 不是将状态处理与驱动程序逻辑深度混合,而是将 GL 运行时与低级后端隔离开来。
## 高级多媒体合成扩展 (AMX)
一种统一的、分布式的、硬件加速的多媒体处理工作。
**AMX**,即 **Advanced Multimedia Synthesis Extensions** 的首字母缩写,是对 **加速框架实验版 (AFX)** 的修正案,用一个硬件加速的多媒体合成基础层扩展了 Qwadro 执行生态系统。
AMX 由 SIGMA Technology Group 设计,旨在驱动硬件媒体引擎,例如 Intel Video Acceleration、DirectX Video Acceleration、Direct3D 12 Video 和 Vulkan Video,主要动机是寻找向 OpenGL 提供内容的方式。
开发的多媒体合成基础设施包含用于设备发现、请求和枚举的功能,以及支持声音合成生成的音频内容的创建、处理、分发和播放的设备和技术,这些是设备驱动程序接口 (DDI) 和 Mix I/O System 实现所需要的。
它还定义了一个 DDI,用于独立于绘制机制运行时管理低级共享任务。
使用 MSI 实现的任务将由 MSI DDI 处理。
## 高级多媒体 UX 扩展 (AUX)
一种可移植的、跨平台的窗口系统集成 (WSI),灵感来源于 Windows 7。
**AUX**,即 **Advanced MMUX Extensions** 的首字母缩写,是对 **加速框架实验版 (AFX)** 的修正案,用 **Qwadro 用户体验基础设施 (MMUX)** 扩展了 Qwadro 执行生态系统。
**MMUX** 是 User I/O System 的基础,其开发旨在增强多媒体用户界面 (MMUI) 和 Shell 环境中的可用性和用户体验。
MMUX 管理窗口如何在屏幕上打开、关闭、调整大小和排列,有助于实现流畅有序的工作流。
它为用户提供了自定义主题、布局和工具栏的选项,以适应他们的偏好,增强个人可用性并促进用户交互,通过直观的设计使复杂任务更容易执行。
OpenGL Core 上下文创建的历史噩梦通过 AUX(AVX 的伴侣规范)得到了解决。
AUX 提供:
- 适用于所有操作系统的统一表面接口
- 进入 Qwadro 的 Shell(VGI 的系统层)
- 可预测且严格的表面生命周期规则
- 即插即用的 ICD 兼容性
有了 AUX,开发者不再依赖 WGL、GLX、CGL、EGL 或特定平台的黑客手段。
## 许可证
本项目以 [Qwadro 许可证][license] 发布。
Qwadro 及其部分版权归 2017 SIGMA FEDERATION 所有。保留所有权利;归其制定者和协作者所有。
## 技术演示媒体



















.png)
.png)
.png)
.png)
.png)
.png)
.png)
.)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
标签:API标准化, C语言编程, POSIX替代, 中间件, 云端协同, 互操作性, 分布式架构, 分布式系统, 响应大小分析, 客户端加密, 容器化部署, 底层系统开发, 异构计算, 微服务架构, 操作系统接口, 硬件抽象层, 系统移植性, 联合执行, 跨平台开发, 软件工程基础设施, 边缘计算