2012-08-07 59 views
2

我现在有一点使用OpenGL的经验,我开始使用它,因为它说它是调用视频卡功能的唯一方法。 (除了DirectX - 我喜欢不到OpenGL)是否可以直接访问视频卡? (没有API)

对于编程(例如在C/C++中),OS提供了许多API,例如用于打印的函数。但是也可以通过使用汇编语言进行编码来绕过这些问题,并且调用更低级别的API(增加速度)或直接调用CPU。

所以我开始想知道为什么这不可能在视频卡上。为什么需要像OpenGL或DirectX这样的API?与这些进程是:

API-call > 
OS calls video card (with complex opcodes, I think) > 
    video card responses (in complex binary format) > 
    OS decodes this format and responses to user (in expected API format) 

我相信这应该会降低渲染过程的速度。

所以我的问题是:
有没有可能绕过任何图形API(在Windows下)并直接调用视频卡?

谢谢
丹尼斯

+0

视频卡存储器和寄存器将隐藏在系统地址空间 - 无法直接访问它们。你可以期望的最好的方式是打电话给司机,但我不确定这是可能的。 – 2012-08-07 15:32:07

+2

为什么需要?否则,你会一直陷入硬件特定的问题。在那里,做到了,不喜欢它。 – 2012-08-07 15:35:41

+1

更好的问题是为什么人们会认为他们可以写出比供应商写的更好的图形驱动程序。 – 2012-08-07 19:01:01

回答

2

用汇编或绕过的API犯规自动使事情更快,因为你不知道什么是写库中的人知道经常慢。

这是绝对有可能的是,这些库只是处理器指令,戳记和窥视寄存器和内存,你可以轻松地戳和窥视寄存器和内存。第一个问题是你可以得到这些信息,当然,你可以看看linux驱动程序或其他开源资源。其次,今天许多繁重的工作都是由图形处理器在图形芯片上完成的,所以如果存在瓶颈,主机只是一个介于两者之间的瓶颈,而不一定是瓶颈。是的,你可以根据你的视频卡/芯片等编程gpus。

你需要确定瓶颈真的在哪里,如果真的存在,可能总线是你的问题,也许操作系统是你的问题或编译器,硬盘或系统内存,处理器和体系结构本身,缓存等等。同时,除非您尝试,否则您将如何学习如何找到这些东西。

我建议彻底摆脱Windows,没有操作系统,去裸机。拿linux和其他开源资源加上任何你可以从供应商那里得到的东西,并接近金属。您还需要大量有关pci/pcie总线和网桥,dma控制器以及路径中所有内容的信息。如果你不想这么低,那么就使用linux或bsd或其他一些命令行环境,在这个环境中,如何接管视频系统,并在保留操作系统和开发环境的情况下接管视频系统(vi/emacs,gcc)。

如果这一切都太过先进,那么我建议,引入简单的gpu例程,以便了解视频卡至少在某个级别上的工作方式,并逐步解决这一学习练习。

+0

您可否向我们提供一些推荐书籍,以便提供有关Hot直接访问GPU或图形卡与API或外部libarary的推荐书籍? – 2015-11-05 05:26:14

+0

linux和bsd以及mesa3d等都是开源的。如果你愿意,你可以从那里开始,删除操作系统依赖关系,或者只是看看他们在做什么,并以你自己的方式去做。 – 2015-11-05 17:42:38

+0

非常感谢...... – 2015-11-06 10:25:28

相关问题