• 全部
...

AMD Mantle API 学习笔记 -- Mantle初始化

xiaozhu12371237 2016-05-12 07:47:03

本系列文章是笔者研究mantle的一些心得;其目的是为了学习新的图形API标准Vulkan。因为Vulkan还没有正式发布,而它事实上是基于mantle的,所以研究mantle可以让我们对新一代图形标准(Vulkan和D3D12)有一个提前认识。在Vulkan正式发布后,笔者也会写一系列的文章来介绍Vulkan。事实上,mantle的API函数都是以gr开头的;而Vulkan很多API只是简单的替换为vk开头而已。这进一步说明学习mantle的价值。

要学习一个新的API,最好就是用它来写个简单的demo。国外有位牛人已经写了个mantle版的Hello World:Implementing Hello Triangle with Mantle。这个例子的代码在:MantleHelloTriangle。笔者接下来的文章都是基于这个例子,试着把mantle的一系列基本概念剖析一下。

初始化Mantle

使用mantle首先要初始化;主要是调用“grInitAndEnumerateGpus()”来获取系统中所有GPU的handle,然后调用”grGetGpuInfo()”得到每个物理GPU的属性。另外还可以获取GPU_PERFORMANCE的特性,这样Apps可以根据这些信息来选择使用哪个GPU。



Device和Queue

选取GPU后就可以在此GPU上创建Device了。Device代表了一个在某GPU上运行的上下文(execution context);这个概念与D3D里的ID3DDevice对象类似。




在这里我们在默认gpu0上创建了一个device;其主要需要的参数是要支持的extension,需要的queue以及validation的级别。
在此我们有必要理一下物理显卡(adaptor),GPU,Screen/Display,Device和Queue之间的关系;这种基本概念之间的联系在以后的标准Vulkan里也是适用的。



这里我们只用到了一个extension:WSI_WINDOWS。这是为了获取相应的Display对象,从而将渲染结果Swap到屏幕上去显示。
有了Device后,我们就可以得到Queue了。Mantle的设计模式是应用程序生成并填写Cmd Buffers;然后再将Cmd Buffers submit到相应的Queue中去(Queue和Engine对应)。后面笔者将专门写一编关于Queue的文章。目前我们只要关心大致上Mantle支持三种Queue:Universal(Gfx和Compute)、Compute(通用计算,可以异步与渲染Queue)和DMA。



到此为止,mantle初始化完成,device和queue也都准备好了。

...全文
给本帖投票
1767 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,773

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部