《Metal》官方文档翻译010--Metal工具

本章列出了可用于帮助您自定义和改进开发工作流的工具。

在应用程序构建过程中创建库

.metallib在应用程序构建过程中编译着色器语言源文件和构建库(文件)可以在运行时编译着色源源代码实现更好的应用程序性能。您可以在Xcode中构建库或使用命令行实用程序。

使用Xcode构建库

这是项目中的任何着色器的源文件会被自动用于生成默认的库,你可以从Metal框架代码与访问newDefaultLibrary的方法MTLDevice

使用命令行实用程序来构建库

图8-1显示了构成Metal着色器源代码的编译器工具链的命令行实用程序。当您.metal在项目中包含文件时,Xcode会调用这些工具来构建一个库文件,您可以在运行时在应用程序中访问它。

将着色器源编译成不使用Xcode的库:

1:使用该metal工具将每个.metal文件编译成单个.air文件,该文件存储着色器语言代码的中间表示(IR)。

2:或者,使用该metal-ar工具将多个.air文件归档到一个.metalar文件中。(metal-ar类似于Unix ar。)

3:使用该metallib工具.metallib从IR .air文件或存档.metalar文件构建Metal 库文件。

图8-1 使用命令行实用程序构建库文件

清单8-1显示了将.metal文件编译和构建到文件中所需的最少命令数.metallib。

清单8-1 使用命令行实用程序构建库文件

xcrun -sdk macosx metal MyLibrary.metal -o MyLibrary.air
xcrun -sdk macosx metallib MyLibrary.air -o MyLibrary.metallib

要以框架代码访问结果库,请调用该newLibraryWithFile:error:方法,如清单8-2所示。

清单8-2 访问您的应用程序中的库文件

NSError *libraryError = NULL;

NSString *libraryFile = [[NSBundle mainBundle] pathForResource:@"MyLibrary" ofType:@"metallib"];

 id <MTLLibrary> myLibrary = [_device newLibraryWithFile:libraryFile error:&libraryError];

if (!myLibrary) {

 NSLog(@"Library error: %@", libraryError);

}

Xcode主题设置和性能

当一个Metal应用程序从Xcode运行时,默认的方案设置可以降低性能。Xcode检测是否在源代码中使用Metal API,并自动启用GPU Frame Capture和Metal API验证设置,如图8-2所示。启用GPU帧捕获时,调试层被激活。当启用Metal API验证时,每个调用都被验证,这进一步影响性能。对于这两种设置,CPU性能比GPU性能更受影响。除非您禁用这些设置,否则当应用程序在Xcode之外运行时,应用程序的性能可能会显着提高。

图8-2 Metal应用程序的Xcode方案编辑器设置

调试

在调试和分析您的Metal应用程序时,请使用以下部分中的提示获取更多有用的诊断信息。

注意: 仅当您的Xcode项目的部署目标设置为最新的SDK时,调试才会启用。

Metal着色语言源文件的文件扩展名

对于Metal着色语言源代码文件名,您必须使用.metal文件扩展名来确保开发工具(Xcode和GPU框架调试器)在调试或分析时识别源文件。

使用Xcode执行帧捕获

要在Xcode中执行帧捕获,请启用调试并调用insertDebugCaptureBoundary方法MTLCommandQueue来通知Xcode。该presentDrawable:presentDrawable:atTime:的方法MTLCommandBuffer类似通知的Xcode约帧捕获,故称insertDebugCaptureBoundary只有当这些方法不存在。有关更多信息,请参阅调试Metal和OpenGL ES

标签属性

许多Metal框架对象(如命令缓冲区,流水线状态和资源)支持一个label属性。您可以使用此属性为在应用程序设计的上下文中有意义的每个对象分配一个名称。这些标签显示在Xcode Frame Capture调试界面中,使您可以更轻松地识别对象。

类似地,insertDebugSignpost:pushDebugGroup:,和popDebugGroup方法允许插入调试字符串到命令缓冲器和推动或用于识别编码的命令的组弹出字符串标签。

Metal系统跟踪

要在仪器中配置应用程序,请运行“Metal系统跟踪”工具。有关详细信息,请参阅Metal系统跟踪分析模板

下一页
上一页

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,478评论 25 707
  • 美好的时光总是很短暂, 三年的同窗也就此别过。 天下没有不散的宴席, 我们也将各奔东西。 回想起入学的...
    可爱的犯傻阅读 172评论 0 0
  • 都不是吃素的主儿 和爸妈在学校附近逛了一天又和爸妈去这所城市的附近的景点逛了逛。距离正式开学还有一天,爸妈便坐火车...
    王疯疯阅读 899评论 1 1
  • 记忆之于这里,一层又一层的堆叠,新与旧的光影中呼啸而过那趟夜间的火车。我就在这交错的时空中沉沉睡去,醒来已经在苍山...
    淋潇微语阅读 326评论 0 0