题主是一位图形引擎开发者,主要从事OpenGL,目前对GPU底层的详细架构和工作原理还未掌握,希望可以通过编写显卡驱动的过程对GPU工作的各个阶段有深入的理解,题主有看到一本讲解CUDA的书,大致看了一下感觉还是不能透彻理解,同时也看了一本windows驱动开发的书,书里并没讲显卡驱动的细节,希望各位NVIDIA的GPU架构师大神们可以推荐一下比较具体的学习资源和流程
补充一下,昨天看到龚大大回答的一个问题关于vbo是否会占用内存以及可能发生的问题,龚大大提到需要根据驱动判断,目前题主参考若干开源引擎初步实现图形引擎各个模块,由于GPU底层方面知识缺失严重,对于针对GPU的渲染优化方面异常乏力
补充一下,昨天看到龚大大回答的一个问题关于vbo是否会占用内存以及可能发生的问题,龚大大提到需要根据驱动判断,目前题主参考若干开源引擎初步实现图形引擎各个模块,由于GPU底层方面知识缺失严重,对于针对GPU的渲染优化方面异常乏力
添加评论
按投票排序
按时间排序
7 个回答
谢
@Belleve 邀。
先泼几桶冷水。
1. 底层详细架构和工作原理,掌握和不掌握对图形引擎开发没有帮助。
2. 编写显卡驱动对GPU工作的各个阶段有深入了解帮助有限。
3. CUDA尚且不理解,就别下到驱动了。
4. 以前Win DDK有一个ATI的驱动,后来删掉了,显卡驱动就那么几家做,其他人了解也没用。
5. 你说你从事OpenGL,标签却是OpenGL ES。到底是哪个,先说清楚,平台不同驱动不同。
好,如果到此还没熄灭的话,你可以从这里开始
Windows Vista Display Driver Model
先搞清楚win上驱动的框架WDDM,然后看
Windows Display Driver Model (WDDM) Design Guide (Windows Drivers)
了解各个部分分别要求做什么。接着看AMD的硬件文档
Home - AMD
从公开资料上你能找到的信息也就到此为止了。具体往下,就是跟具体硬件相关的。要么你找Linux下的开源驱动,要么就进硬件厂商。
先泼几桶冷水。
1. 底层详细架构和工作原理,掌握和不掌握对图形引擎开发没有帮助。
2. 编写显卡驱动对GPU工作的各个阶段有深入了解帮助有限。
3. CUDA尚且不理解,就别下到驱动了。
4. 以前Win DDK有一个ATI的驱动,后来删掉了,显卡驱动就那么几家做,其他人了解也没用。
5. 你说你从事OpenGL,标签却是OpenGL ES。到底是哪个,先说清楚,平台不同驱动不同。
好,如果到此还没熄灭的话,你可以从这里开始
Windows Vista Display Driver Model
先搞清楚win上驱动的框架WDDM,然后看
Windows Display Driver Model (WDDM) Design Guide (Windows Drivers)
了解各个部分分别要求做什么。接着看AMD的硬件文档
Home - AMD
从公开资料上你能找到的信息也就到此为止了。具体往下,就是跟具体硬件相关的。要么你找Linux下的开源驱动,要么就进硬件厂商。
看一下WDDM就知道了。
图形驱动的主要职能就是负责调配显卡使用、管控各项资源(纹理、Buffer、Shader)、Shader的编译与优化、渲染状态的一致性验证、从API到硬件Microcode的转译、数据从内存到GPU/显存的传送、响应硬件的反馈。
用两个字概括就是,打杂。
题主你的需求和驱动关系都不太大。你还是要了解显卡的Functional Spec,以及一些GPU架构方面的常识,这些都更重要一些。
图形驱动的主要职能就是负责调配显卡使用、管控各项资源(纹理、Buffer、Shader)、Shader的编译与优化、渲染状态的一致性验证、从API到硬件Microcode的转译、数据从内存到GPU/显存的传送、响应硬件的反馈。
用两个字概括就是,打杂。
题主你的需求和驱动关系都不太大。你还是要了解显卡的Functional Spec,以及一些GPU架构方面的常识,这些都更重要一些。
品雪,人生如梦
去看那本巨厚的 windows driver 的书吧,可能还需要看一下 windows internals 方便理解。
不过,这绝对是事倍功半的做法。OpenGL (ES) 的规范好好看几遍就啥都有了,剩下N记和A记,ES的话PowerVR的开发者文档扫一遍就挺感人了,驱动和硬件实现细节等需要了再找零碎资料看。
不过,这绝对是事倍功半的做法。OpenGL (ES) 的规范好好看几遍就啥都有了,剩下N记和A记,ES的话PowerVR的开发者文档扫一遍就挺感人了,驱动和硬件实现细节等需要了再找零碎资料看。
做显卡驱动开发的来答一发,
首先声明:显卡驱动和图形学半毛钱关系都没有,你所需要的这些知识都在显卡内部就封装好了,如果想要了解的话可以读显卡的手册。
显卡驱动做的工作是将你调用的函数进行组装,组装成命令流。然后写入显卡ringbuffer记录的下一个命令地址,而显卡自己会有两个寄存器,分别指向当前执行地址和ringbuffer写入地址,只要执行不超过写入就一直执行。而显卡指令提供的命令方式其实和opengl的函数差距也不是特别大,顶多就是关于缓存什么的需要显卡驱动来管理一下。
所以如果你要做显卡驱动的话,接触的更多是驱动方面相关的知识,图形学的知识几乎用不到。
首先声明:显卡驱动和图形学半毛钱关系都没有,你所需要的这些知识都在显卡内部就封装好了,如果想要了解的话可以读显卡的手册。
显卡驱动做的工作是将你调用的函数进行组装,组装成命令流。然后写入显卡ringbuffer记录的下一个命令地址,而显卡自己会有两个寄存器,分别指向当前执行地址和ringbuffer写入地址,只要执行不超过写入就一直执行。而显卡指令提供的命令方式其实和opengl的函数差距也不是特别大,顶多就是关于缓存什么的需要显卡驱动来管理一下。
所以如果你要做显卡驱动的话,接触的更多是驱动方面相关的知识,图形学的知识几乎用不到。
显卡驱动不可能是一个人能写出来的,我觉得你如果只是想对开发有帮助看看这个文档就够了
https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
Nvidia的驱动是闭源的,你看不到具体细节。如果实在想知道,可以看envytools的文档,但确实对你开发图形帮助不大。
https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
Nvidia的驱动是闭源的,你看不到具体细节。如果实在想知道,可以看envytools的文档,但确实对你开发图形帮助不大。
题主是一位图形引擎开发者,主要从事OpenGL,目前对GPU底层的详细架构和工作原理还未掌握,希望可以通过编写显卡驱动的过程对GPU工作的各个阶段有深入的理解,题主有看到一本讲解CUDA的书,大致看了一下感觉还是不能透彻理解,同时也看了一本windows驱动开发的书,书里并没讲显卡驱动的细节,希望各位NVIDIA的GPU架构师大神们可以推荐一下比较具体的学习资源和流程
补充一下,昨天看到龚大大回答的一个问题关于vbo是否会占用内存以及可能发生的问题,龚大大提到需要根据驱动判断,目前题主参考若干开源引擎初步实现图形引擎各个模块,由于GPU底层方面知识缺失严重,对于针对GPU的渲染优化方面异常乏力
补充一下,昨天看到龚大大回答的一个问题关于vbo是否会占用内存以及可能发生的问题,龚大大提到需要根据驱动判断,目前题主参考若干开源引擎初步实现图形引擎各个模块,由于GPU底层方面知识缺失严重,对于针对GPU的渲染优化方面异常乏力
按投票排序
按时间排序
7 个回答
谢
@Belleve 邀。
先泼几桶冷水。
1. 底层详细架构和工作原理,掌握和不掌握对图形引擎开发没有帮助。
2. 编写显卡驱动对GPU工作的各个阶段有深入了解帮助有限。
3. CUDA尚且不理解,就别下到驱动了。
4. 以前Win DDK有一个ATI的驱动,后来删掉了,显卡驱动就那么几家做,其他人了解也没用。
5. 你说你从事OpenGL,标签却是OpenGL ES。到底是哪个,先说清楚,平台不同驱动不同。
好,如果到此还没熄灭的话,你可以从这里开始
Windows Vista Display Driver Model
先搞清楚win上驱动的框架WDDM,然后看
Windows Display Driver Model (WDDM) Design Guide (Windows Drivers)
了解各个部分分别要求做什么。接着看AMD的硬件文档
Home - AMD
从公开资料上你能找到的信息也就到此为止了。具体往下,就是跟具体硬件相关的。要么你找Linux下的开源驱动,要么就进硬件厂商。
先泼几桶冷水。
1. 底层详细架构和工作原理,掌握和不掌握对图形引擎开发没有帮助。
2. 编写显卡驱动对GPU工作的各个阶段有深入了解帮助有限。
3. CUDA尚且不理解,就别下到驱动了。
4. 以前Win DDK有一个ATI的驱动,后来删掉了,显卡驱动就那么几家做,其他人了解也没用。
5. 你说你从事OpenGL,标签却是OpenGL ES。到底是哪个,先说清楚,平台不同驱动不同。
好,如果到此还没熄灭的话,你可以从这里开始
Windows Vista Display Driver Model
先搞清楚win上驱动的框架WDDM,然后看
Windows Display Driver Model (WDDM) Design Guide (Windows Drivers)
了解各个部分分别要求做什么。接着看AMD的硬件文档
Home - AMD
从公开资料上你能找到的信息也就到此为止了。具体往下,就是跟具体硬件相关的。要么你找Linux下的开源驱动,要么就进硬件厂商。
看一下WDDM就知道了。
图形驱动的主要职能就是负责调配显卡使用、管控各项资源(纹理、Buffer、Shader)、Shader的编译与优化、渲染状态的一致性验证、从API到硬件Microcode的转译、数据从内存到GPU/显存的传送、响应硬件的反馈。
用两个字概括就是,打杂。
题主你的需求和驱动关系都不太大。你还是要了解显卡的Functional Spec,以及一些GPU架构方面的常识,这些都更重要一些。
图形驱动的主要职能就是负责调配显卡使用、管控各项资源(纹理、Buffer、Shader)、Shader的编译与优化、渲染状态的一致性验证、从API到硬件Microcode的转译、数据从内存到GPU/显存的传送、响应硬件的反馈。
用两个字概括就是,打杂。
题主你的需求和驱动关系都不太大。你还是要了解显卡的Functional Spec,以及一些GPU架构方面的常识,这些都更重要一些。
品雪,人生如梦
去看那本巨厚的 windows driver 的书吧,可能还需要看一下 windows internals 方便理解。
不过,这绝对是事倍功半的做法。OpenGL (ES) 的规范好好看几遍就啥都有了,剩下N记和A记,ES的话PowerVR的开发者文档扫一遍就挺感人了,驱动和硬件实现细节等需要了再找零碎资料看。
不过,这绝对是事倍功半的做法。OpenGL (ES) 的规范好好看几遍就啥都有了,剩下N记和A记,ES的话PowerVR的开发者文档扫一遍就挺感人了,驱动和硬件实现细节等需要了再找零碎资料看。
做显卡驱动开发的来答一发,
首先声明:显卡驱动和图形学半毛钱关系都没有,你所需要的这些知识都在显卡内部就封装好了,如果想要了解的话可以读显卡的手册。
显卡驱动做的工作是将你调用的函数进行组装,组装成命令流。然后写入显卡ringbuffer记录的下一个命令地址,而显卡自己会有两个寄存器,分别指向当前执行地址和ringbuffer写入地址,只要执行不超过写入就一直执行。而显卡指令提供的命令方式其实和opengl的函数差距也不是特别大,顶多就是关于缓存什么的需要显卡驱动来管理一下。
所以如果你要做显卡驱动的话,接触的更多是驱动方面相关的知识,图形学的知识几乎用不到。
首先声明:显卡驱动和图形学半毛钱关系都没有,你所需要的这些知识都在显卡内部就封装好了,如果想要了解的话可以读显卡的手册。
显卡驱动做的工作是将你调用的函数进行组装,组装成命令流。然后写入显卡ringbuffer记录的下一个命令地址,而显卡自己会有两个寄存器,分别指向当前执行地址和ringbuffer写入地址,只要执行不超过写入就一直执行。而显卡指令提供的命令方式其实和opengl的函数差距也不是特别大,顶多就是关于缓存什么的需要显卡驱动来管理一下。
所以如果你要做显卡驱动的话,接触的更多是驱动方面相关的知识,图形学的知识几乎用不到。
显卡驱动不可能是一个人能写出来的,我觉得你如果只是想对开发有帮助看看这个文档就够了
https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
Nvidia的驱动是闭源的,你看不到具体细节。如果实在想知道,可以看envytools的文档,但确实对你开发图形帮助不大。
https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
Nvidia的驱动是闭源的,你看不到具体细节。如果实在想知道,可以看envytools的文档,但确实对你开发图形帮助不大。