查看“Accelerated Graphic Cards”的源代码
←
Accelerated Graphic Cards
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
在屏幕上出现一些图形很好,但让视频卡完成肮脏的工作会更好。 但是要当心,事情并不总是像看起来那样容易。 替代 [[VESA BIOS Extension/Accelerator Functions]] == 带文档的图形卡 == === 3Dfx === 对于3dfx卡 (带有Voodoo芯片组的卡) 来说,这是一个好消息。 这些卡可能是唯一具有相对快速的3D支持 (Glide/OpenGL) 和 [http:// darwin-3dfx.sourceforge.net/ open规格] 的卡。 巫毒卡仍然可以从eBay等来源获得。 === 英特尔集成显卡 === 英特尔视频芯片组也有开放标准 (请参阅 [http://www.intel.com www.intel.com])。一些有用的链接: * [ftp://download.intel.com/support/graphics/intel740/29061902.pdf Intel 740 Graphics Accelerator] * [http://www.x.org/docs/intel/ Intel Graphics Documentations on X.org] * [https://01.org/linuxgraphics/documentation/ Intel Graphics Documentation on the 01.org] 推荐在01.org页面上提到的intel-gpu-tools软件包,因为它可用于转储当前寄存器值以进行检查。 === ATI / AMD === AMD [[topic:14887|started in September 2007]] 为他们最近的视频卡打开规格。 关于R630或M56芯片的可以从 [https://www.x.org/docs/AMD/old/ X.org] 下载。 自2014年以来,AMD为所有gpu维护最新的开放编程指南,包括支持的特定电子邮件地址。 在X.org,请参阅 [https://www.x.org/wiki/RadeonFeature/ Feature Matrix for Free Radeon Drivers],特别是 [https://www.x.org/wiki/RadeonFeature/#index13h2 Documentation] 部分。 另请参阅 [https://developer.amd.com/resources/developer-guides-manuals/#open_gpu 开放GPU文档] 和Linux发行版的实现,[https://github.com/GPUOpen-Drivers/AMDVLK AMD开源驱动程序®Github存储库]: <blockquote> 适用于Vulkan的AMD开源驱动程序旨在支持以下AMD gpu: * Radeon™ HD 7000 Series * Radeon™ HD 8000M Series * Radeon™ R5/R7/R9 200/300 Series * Radeon™ RX 400/500 Series * Radeon™ M200/M300/M400 Series * Radeon™ RX Vega Series * AMD FirePro™ Workstation Wx000/Wx100/Wx300 Series * Radeon™ Pro WX x100 Series * Radeon™ Pro 400/500 Series </blockquote> === 英伟达 NVIDIA === NVidia不提供官方规范,但在 [http://nouveau.freedesktop.org/wiki/ nouveau] 项目中花费了大量的社区努力,尽管这种逆向工程规范不完整,也不保证准确,但它可以作为示例和文档的来源。Marcin ko ś cielnicki一直在他的 [http:// 0x04.net/cgit.cgi/envytools/tree/ envytools] 存储库中写下非官方规范 (链接已死,但是envytools在GitHub上https://github.com/envytools/envytools可用)。 尽管到处都缺少位,但它们无疑是了解这些图形卡内部的有趣资源。 这些文档涵盖了从第一张卡到最新卡的整个NVIDIA硬件范围,并且可能足以编写本机驱动程序。 === VMware SVGA-II === 不完全是实体图形卡,但是svga-ii设备是一个不错的虚拟机设备,可以进行3D加速。 它在VMware和QEMU上都可用。 根据MIT许可,VMware还提供了文档详细且易于移植的参考驱动程序。 尽管已弃用,但该设备在QEMU下可以正常工作,并且使用起来相对简单,因此为图形加速提供了一个很好的起点。 参考驱动程序可在 [http:// vmware-svga.sourceforge.net/index.old.html sourceforge上的旧vmware-svga页面上找到]。 == 在哪里可以找到有关nVidia/Matrox/ATI/... 3D图形卡的底层信息?== 问得好。除非您找到其他信息,否则几乎没有关于当前3D图形卡内部工作的公开信息 (免费或其他方式)。 只有一小部分与游戏程序员相关,但操作系统开发人员无法使用。 现在,如果您有VIA图形芯片,情况可能会更好,因为他们最近发布了用于2D和3D操作的 [http://linux.via.com.tw/ 开源驱动程序]。 几乎没有关于2D加速功能的教程或数据表,但至少我们有它们的开源代码。 在其他来源中,Xfree驱动器,[https://github.com/haiku/haiku/tree/master/src/ 附加组件/加速器Haiku (被打开BeOS) 加速器] 和 [http://www.shawnhargreaves.com/freebe/ FreeBE/AF]。 它们可能会提供足够的信息来进行逆向工程,并找出可用于为您的环境编程/移植的模型。 [https://pdos.csail.mit.edu/6.828/2018/读数/硬件/vgadoc/ VGADoc] ([https://pdos.csail.mit.edu/6.828/2018/读数/硬件/vgadoc4b.zip],也在 [https://github.com/achernya/ iap-6.828-website/树/主/读数/硬件/vgadoc Github] 上)。 欢迎任何希望花时间进行此类研究的人在此处发布其结果。 = = 2D加速能为我做什么?= = * 硬件鼠标光标,绘制和管理 (例如,您提供坐标,其余的卡负责) * Bitblt (用于 “位块传输”) 可用于屏幕到屏幕的内存复制,例如windows移动,滚动等。 你提供来来回回的盒子,剩下的工作就交给图形卡。 有些人可能会将其称为 “rasterop”,或者记住Amiga计算机中的硬件 “blitter”。 * 贴片。 您输入一个小的NxN数据集 (通常是8x8和32x32之间的位图),前景色和混合样式加上一些坐标,卡片用给定的图案 “绘制” 该区域。 这可以方便地渲染Win95-like背景 (平铺的),甚至快速绘制字体。 == 3d加速程序如何与3d加速硬件对话?== 我假设您对OpenGL等有很强的了解,并且不需要在此处进行介绍。 如果你以nVidia的linux 3D驱动程序为例 (如果你有一个正确配置的nVidia卡,你可以通过一个简单的 “strace” 在linux中的3D程序上看到几乎所有这些),事情就是这样组织的: * 两个库libGL.so和libGLcore.so将由任何希望进行加速3D操作的程序加载。 启动时,这些库打开 “/dev/nvidiactl” 和 “/dev/nvidia0”。 * 内核模块由 “obscure” 文件nv-kernel.o组成,该文件仅包含 “匿名” 符号和 “开源” 部分,主要将nv内核 (实际上几乎是系统透明的) 粘合到linux内核。 * 库和驱动程序之间的实际 “对话” 无法通过常规方式进行跟踪: /dev/nvidia * 仅允许 “ioctl” 操作和mmap。 在3D程序运行时,您可以在 “/proc/XXXXX/maps” 中观察到的值让我相信驱动程序实际上会直接向库公开硬件资源 (例如纹理空间,顶点空间等)。 但是,可以使用mmiotrace选项编译当前的linux内核,然后可以将其用于记录对mapped空间的所有单独访问。 l /proc/pci Bus 0, device 0, function 0: Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 196). Prefetchable 32 bit memory at 0xfc000000 [0xfdffffff]. Bus 1, device 0, function 0: VGA compatible controller: nVidia Corporation RIVA TNT2 Model 64 (rev 21). IRQ 11. Master Capable. Latency=248. Min Gnt=5.Max Lat=1. Non-prefetchable 32 bit memory at 0xf7000000 [0xf7ffffff]. Prefetchable 32 bit memory at 0xfa000000 [0xfbffffff]. cat /proc/XXXXX/maps ... 40019000-40029000 rw-s f7810000 03:06 54934 /dev/nvidia0 40029000-4002a000 rw-s 0ba98000 03:06 54934 /dev/nvidia0 ... 40a9b000-42a9b000 rw-s fa000000 03:06 54934 /dev/nvidia0 42a9b000-42b79000 rw-p 00000000 00:00 0 42b79000-42c7a000 rw-s fc010000 03:06 54934 /dev/nvidia0 42c7a000-42d7c000 rw-p 00000000 00:00 0 42d7c000-42dfc000 rw-s fc111000 03:06 54934 /dev/nvidia0 == 外部链接 == *[[topic:23548|A topic on duplicating/reverse engineering existing driver code]] [[Category:Video]]
返回至“
Accelerated Graphic Cards
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息