导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

分析 Windows Phone 8 的 Direct3D 应用

2014/6/18

若您在使用 Visual Studio 中的 Direct3D 应用的同时启动 Windows Phone 应用程序分析,与您在分析托管应用时相比,您将看到不同的选项和不同的报告。本机代码探查器将使用 Visual Studio 2012 内置的分析技术并使用标准的 .vspx 文件存储其结果。

您也可以使用本机代码探查器分析从 C# 或 Visual Basic 项目引用的 Windows Phone 运行时组件项目。

有关基于托管应用的探查器分析 Windows Phone 的介绍,请参见 Windows Phone 8 的应用分析。有关开发 Direct3D 应用的更多信息,请参见 Windows Phone 8 的 Direct3D 应用开发

本主题包括以下部分。

针对 Direct3D 应用启动应用分析

  1. 您可以使用以下方法之一运行应用分析。这些方法假定您已在 Visual Studio 中打开了某个 Direct3D 项目。

    • “调试”菜单,选择“开始 Windows Phone 应用分析”

    • 按 Alt-F1。

  2. “执行”选项可用于 Direct3D 应用。

  3. 单击“开始会话”

    您的应用开始在选定的仿真程序或设备上运行。

下图显示了开始 Direct3D 应用的应用分析的屏幕。

Start screen for native profiler

分析完足够多的活动示例后,单击“结束会话”

停止分析会话后,工具将复制和分析它收集到的数据。然后,它将显示结果的摘要视图,如下图所示。

Summary view of profiling results

相较于在模拟中分析应用,在手机上分析应用时,分析数据以及准备报告所花费的时间更长。

有关可用的分析结果报告,请参见分析 Windows 应用中 Visual C++、Visual C# 和 Visual Basic 代码的性能数据。尽管链接的主题描述的是在 Windows 应用上下文中进行的分析,但 Windows Phone SDK 8.0 中 Direct3D 应用的探查器生成的报告与之相同。

您可以配置本机探查器来收集自定义事件。然后在 Windows 性能分析器中查看这些事件。

收集和分析自定义事件

  1. 确保您拥有 Windows 8 的软件开发包 (SDK) 包含的Windows 性能工具包

  2. 利用 Message Compiler (MC.exe),使用自定义事件的清单文件,并生成要在代码中使用的头文件 (.h file) 和资源文件 (.resx)。

  3. 将生成的头文件 (.h file) 和资源文件 (.resx) 添加到您的项目。在代码中使用它们以注册或取消注册自定义事件。

  4. 使用 Wevtutil.exe 工具通过事件记录器注册清单。典型的命令行类似于:

    wevtutil im <manifest file> /rf:<full path to dll/exe which includes the resources> /mf:<same path as rf>

    如果想要更新清单,必须先卸载它。要卸载清单,请运行命令 wevtutil rm <manifest>

  5. 将自定义 GUID 添加到位于以下文件夹的文件 ProfilerTasks.XML

    %ProgramFiles(x86)%\Common Files\Microsoft Shared\Phone Tools\11.0\Profiler\target

    典型的项类似于:

    <EtwProvider Name="CustomEventProducer" GUID="{708BA62D-5B10-4309-AA23-ADC794E60F6C}" />

    编辑此文件需要管理权限。

  6. 返回到 Visual Studio,并通过按 Alt+F1 或从“调试”菜单选择“开始 Windows Phone 应用程序分析”,开始分析应用。

    分析后,日志将存储在 .vspx 文件中以用于分析会话。此文件可在项目目录中找到。

  7. 将 .vspx 文件的文件扩展名更改为 .zip,然后解压缩 .vspx 文件并提取 .etl 日志。日志可以在以下路径中的文件中找到:

    VSProfilingData\VSPerfLog*.etl

  8. 在您首选的适用于 Windows 8 的 ETW 文件查看器(例如,Windows 性能分析器)中打开提取的 .etl 文件。有关更多信息,请参见 Windows 性能分析器 (WPA)

  9. 实例化“通用事件”图形以查看自定义事件数据。

您可以使用本机探查器收集由 Qualcomm 图形驱动程序引发的事件。然后在 Windows 性能分析器中查看这些事件。

由 Qualcomm 图形驱动程序引发的事件在默认情况下已启用。

收集和分析 Qualcomm 事件

  1. 确保您拥有 Windows 8 的软件开发包 (SDK) 包含的Windows 性能工具包

  2. 在 Visual Studio 中打开应用,并通过按 Alt+F1 或从“调试”菜单选择“开始 Windows Phone 应用程序分析”,开始分析应用。

    分析后,日志将存储在 .vspx 文件中以用于分析会话。此文件可在项目目录中找到。

  3. 将 .vspx 文件的文件扩展名更改为 .zip,然后解压缩 .vspx 文件并提取 .etl 日志。日志可以在以下路径中的文件中找到:

    VSProfilingData\VSPerfLog*.etl

  4. 在您首选的适用于 Windows 8 的 ETW 文件查看器(例如,Windows 性能分析器)中打开提取的 .etl 文件。有关更多信息,请参见 Windows 性能分析器 (WPA)

  5. 在“图形资源管理器”中,展开“系统活动”以显示通用事件。然后,将通用事件拖到“分析”窗口中。

  6. 在“分析”窗口中,展开 QCOM DX9 UMD 提供程序以查看 Qualcomm 事件。

    显示的任务名称表示已记录的事件。您可以使用 Windows 性能分析器将视图的范围更改为特定帧等等。

Qualcomm 事件

这些事件提供有关由 Qualcomm 图形驱动程序执行的内部操作。它们可以用来更好地了解您的代码是否高效驱动 GPU,或者会意外导致驱动程序进行耗费大量资源的管理工作。

任务名称

任务描述

GMemStore

指示呈现结果从 GPU 缓存写回系统内存的时间。将呈现数据推送到系统内存。

GMemLoad

从系统内存中提取以前呈现的位并将它们加载到 GPU 缓存。

CmdBufferFlush

表示命令缓存刷新,其中由 CPU(响应 D3D API 调用)生成的呈现命令被发送到要被执行的 GPU 硬件。许多刷新指示更低的平行度。

ResourceDiscardWarning

指示重命名限制已达到给定的分配值,而且所有现有的重命名仍在使用。此事件是一种性能警告,因为在这些条件下,驱动程序将执行停止锁定。通常,这表示有太多的动态数据从 CPU 传输到 GPU。

QueryNotSignaled

应用于 API 查询。此事件警告在查询完成之前调用了 GetData。如果此事件重复发生,则表示应用在发起查询和试图获得结果之间没有进行足够的工作。

OutOfMemory

可用于图形驱动程序以完成操作的内存不足。分配的系统内存或视频内存不足。

MismatchedConfig

表示应用使用了不兼容的大小或格式来指定深度缓冲区并呈现目标。运行时不阻止此情况。这可能导致某些意外的视觉失真。

Qualcomm 刷新原因

此枚举提供了有关 CmdBufferFlush 事件原因的其他信息。

消息

描述

显式

显式请求了刷新(例如,通过在场景结束时调用 Present)。

OutOfSpace

在 GPU 硬件的命令缓冲区中没有更多的可用空间。

OutOfHandles

是指描述在命令缓冲区中引用的所有内存的分配句柄。通常,此事件表示批处理了大量呈现。尽管批处理是建议的做法,但此事件表示,由于发生句柄用尽情况,大量批处理的刷新对于某个应用来说可能过多。

ExternalDependency

表示存在引起刷新的引擎间相关性 - 例如,按照视频处理 (DXVA) 操作对图面进行三维呈现。此操作序列要求在视频处理操作之前刷新三维呈现,以便计划程序能够看到需要的信号并等待。这是由视频 UMD 启动的刷新。

AllocationReferenced

当由 GPU 写入的资源分配被其他某些硬件单元或 CPU 引用时,触发此刷新。以前的 GPU 呈现必须在允许继续进行对该分配的任何其他引用之前刷新。

视频

表示视频驱动程序请求 GPU 执行一些呈现工作。

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft