`
qt726qt
  • 浏览: 15858 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

perfHUD使用说明

 
阅读更多

perfHUD使用说明
2011年04月14日
  perfHUD使用说明
  以下前半部分是PerfHUD 6 Quick Tutorial,后半部分是PerfHUD 6 User Guide
  注意使用PerfKit_x86_XP_6.62.0120.1800.exe中的驱动,才能正常显示PerfHUD图表。
  还要看看PerfSDK中的NVIDIA Developer Control Panel是否可以开启,若可以,才说明安装无误。
  另外,driver time和driver sleep似乎在ogre中支持不全,需要添加代码才可以显示。
  1.PerfHUD的系统需求
  只支持geforce 6系列以上显卡。只支持DX9.0c和DX10,不支持openGL。只支持Windows XP和
  Windows Vista.
  2.安装驱动
  在Windows Vista上,驱动的版本至少是173以上,这允许你使用PerfHUD所有的功能。
  在Windows XP上,你必须安装NVIDIA PerfKit提供的驱动。否则,你将不能完全使用PerfHUD所有
  的功能。
  3.设置激活PerfHUD面板的快捷键
  双击“NVIDIA PerfHUD 6 Launcher”(PerfHUD的桌面图标),会弹出一个设置面板,最上方有一个
  文本框,点击它,直接按住键盘上是的“ctrl”或“shift”或“alt”,再按住一个按键,就自动
  组成了一个快捷键,显示在文本框中。若不设置,默认是“ctrl+Z”。
  注意:快捷键不要和应用程序使用的重复了,否则只认应用程序的。PerfHUD本身的一些快捷键只在
  被激活后才起效。
  4.编辑你的程序
  为了更好地分析,你需要添加一段代码到你的程序中,这段代码需要在你发布你的程序的时候移除,
  以免你的程序会被其他人用同样的方法分析。
  你或许见过如下代码:
  ------------------------------------
  HRESULT Res;
  Res = g_pD3D->CreateDevice(
  D3DADAPTER_DEFAULT,
  D3DDEVTYPE_HAL,
  hWnd,
  D3DCREATE_HARDWARE_VERTEXPROCESSING,
  &d3dpp,
  &g_pd3dDevice
  );
  ------------------------------------
  当你使用PerfHUD游览你的程序时,将创建一个NVIDIA PerfHUD适配器。其给予了PerfHUD分析你的
  程序的许可。另外,你必须选择标准的光栅类型作为设备类型,因为一些程序可能不经意间选择了
  NVIDIA
  PerfHUD适配器ID,并向未经授权的分析暴露了程序。只要你选择了PerfHUD适配器,那么你的程序实
  际上并没有使用标准的光栅。
  以下代码将帮助你的程序开启PerfHUD分析:
  ===
  DX9
  ------------------------------------
  // Set default settings
  UINT AdapterToUse=D3DADAPTER_DEFAULT;
  D3DDEVTYPE DeviceType=D3DDEVTYPE_HAL;
  #if SHIPPING_VERSION
  // When building a shipping version, disable PerfHUD (opt-out)
  #else
  // Look for 'NVIDIA PerfHUD' adapter
  // If it is present, override default settings
  for (UINT Adapter=0;AdapterGetAdapterCount();Adapter++)
  {
  D3DADAPTER_IDENTIFIER9        Identifier;
  HRESULT                       Res;
  Res = g_pD3D->GetAdapterIdentifier(Adapter,0,&Identifier);
  if (strstr(Identifier.Description,"PerfHUD") != 0)
  {
  AdapterToUse=Adapter;
  DeviceType=D3DDEVTYPE_REF;
  break;
  }
  }
  #endif
  if (FAILED(g_pD3D->CreateDevice( AdapterToUse, DeviceType, hWnd,
  D3DCREATE_HARDWARE_VERTEXPROCESSING,
  &d3dpp, &g_pd3dDevice) ) )
  {
  return E_FAIL;
  }
  ------------------------------------
  ====
  DX10
  ------------------------------------
  #if SHIPPING_VERSION
  // When building a shipping version, disable PerfHUD (opt-out)
  #else
  // Look for 'NVIDIA PerfHUD' adapter
  // If it is present, override default settings
  IDXGIFactory *pDXGIFactory;
  ID3D10Device *pDevice;
  HRESULT hRes;
  hRes = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pDXGIFactory);
  // Search for a PerfHUD adapter.
  UINT nAdapter = 0;
  IDXGIAdapter* adapter = NULL;
  IDXGIAdapter* selectedAdapter = NULL;
  D3D10_DRIVER_TYPE driverType = D3D10_DRIVER_TYPE_HARDWARE;
  while (pDXGIFactory->EnumAdapters(nAdapter, &adapter) !=
  DXGI_ERROR_NOT_FOUND)
  {
  if (adapter)
  {
  DXGI_ADAPTER_DESC adaptDesc;
  if (SUCCEEDED(adapter->GetDesc(&adaptDesc)))
  {
  const bool isPerfHUD = wcscmp(adaptDesc.Description, L"NVIDIA PerfHUD") == 0;
  // Select the first adapter in normal circumstances or the PerfHUD one if it exists.
  if(nAdapter == 0 || isPerfHUD)
  selectedAdapter = adapter;
  if(isPerfHUD)
  driverType = D3D10_DRIVER_TYPE_REFERENCE;
  }
  }
  ++nAdapter;
  }
  #endif
  if(FAILED(D3D10CreateDevice( selectedAdapter, driverType, NULL, 0, D3D10_SDK_VERSION,
  &pDevice)))
  return E_FAIL;
  ------------------------------------
  确定你的程序在运行时没有使用软件光栅。
  若你使用的是ogre,那么你可以省略这一步,ogre已经为我们做好了。
  但要记得设置ogre配置窗口的PerfHUD状态和设置使用的渲染驱动。
  5.启动应用程序测试
  右键点击应用程序->发送到perfHUD即可启动测试了,或者拖到perfHUD图表上启动。
  ogre在程序启动前的选项面板中也有一个perfHUD选项,选yes就可以了。
  运行程序,就可以看到perfHUD的图表显示在最上层。
  激活PerfHUD,可以看到程序界面下方出现了4个选项。
  5.1 Performance Dashboard(性能仪表)
  用于查找场景中出现瑕疵的地方。
  默认就是Performance Dashboard模式。
  在此模式下,你可以使用的快捷键:
  +  加快程序(上限是6倍)
  -  减慢程序(下限是1/8倍)
  ctrl+T 转换程序中所有纹理为2×2大小
  ctrl+D 查看帧缓冲的深度复杂度
  你也可以自定义图表:
  鼠标左键点击蓝色方块 打开配置对话框
  鼠标左键点击并拖动绿色方块 改变图表大小
  鼠标左键点击红色方块 关闭图表
  你还可以创建新图表,鼠标右键点击空白处,在弹出菜单中选“New Batch Size Graph” 
  5.2 Frame Debugger(帧调试器)
  用于在Performance Dashboard查找出场景中出现瑕疵的地方后,冻结帧,调试其绘画调用,
  从细节上分析性能。
  此模式下,在下方会出现一个滑动条,可以拖动它查看不同的帧中的绘画调用。
  当前绘画调用是用高亮的桔黄色表示在右上方。
  在此模式下,你可以使用的快捷键:
  上下箭头 减少或增加当前的绘画调用
  Home 跳到第1帧
  End 跳到最后一帧
  Page Up 大量减少当前的绘画调用
  Page Down 大量增加当前的绘画调用
  你也可以在左上方的下拉列表中对当前帧调用不同的显示:
  Textures 查看和编辑纹理和渲染目标
  call list 查看整个D3D调用列表
  Dependencies 查看生产者和消费者的相关性
  Perf Event 查看程序描述帧部分的性能标签,点击标签,立即跳到相关的绘画调用。
  左上方是纹理列表。
  右上方是渲染目标列表。
  鼠标左键双击图片,可以看到鼠标位置的像素信息。
  鼠标右键点击图片,可以选择替换的纹理,回到Performance Dashboard模式下就可以看到效果。
  点击右下方“Advanced”按钮,可以查看当前图像管道的信息:
  Vertex Assembly 显示场景中的顶点信息
  Vertex Shader 显示使用的顶点片段程序
  Pixel Shader 显示使用的像素片段程序
  Raster Operations 显示光栅操作
  5.3 Frame Profiler(帧剖析器)
  用于提供每次绘画调用详细的性能信息的统计数据,其是关于性能和GPU使用的。
  其可以快速地对当前帧进行一些性能测试。
  6.使用PerfHUD高效地剖析
  6.1检查你的程序是偏向于CPU还是GPU计算
  若你的程序偏向于CPU,那么针对于GPU的优化并不会提供多少性能。
  你可以使用Performance Dashboard快速地检查你的程序是偏向于CPU还是GPU计算。
  第1个方法是检查图表:Total Frame Time(总的帧时间)和Driver Time(驱动时间)。
  若你的程序是偏向于CPU,你可以看到黄线(Total Frame Time)和红线(Driver Time)有很大间隔。
  第2个方法是按“Ctrl+N”去忽略所有绘画调用。若你的帧速没有增加,那么说明GPU再好也不能使你
  的程序运行的再快了,此时说明你的程序是偏向于CPU的。
  其他情况,你可以使用CPU性能分析工具,如Intel的VTune或AMD的CodeAnalyst。
  6.2使用Frame Debugger解决渲染错误
  若你在Performance Dashboard下发现了任何图像错误,你可以立刻转换到Frame Debugger,检查每一
  个绘画调用的几何体、纹理、shader、光栅操作。
  6.3用Frame Profiler解决性能问题
  Frame Profiler自动提供性能分析。
  7.全部快捷键
  F1 帮助
  F2 隐藏/显示UI
  F4 立即反馈
  F5 转到Performance Dashboard
  F6 转到Debug Console
  F7 转到Frame Debugger
  F8 转到Frame Profiler
  F9 切换可编辑shader
  F10 切换可编辑渲染器状态
  F11 截屏
  Shift+F11 截屏(没有HUD)
  8.Performance Dashboard快捷键
  9.Frame Debugger和Frame Profiler通用快捷键(在2个模式下通用)
  ctrl+A 切换高级模式
  ctrl+H 切换高亮当前绘画调用
  Right/Up arrow 前进1绘画调用
  Left/Down arrow 后退1绘画调用
  Home 跳到第0个绘画调用
  End 跳到最后一个绘画调用
  PageDown 后退10个绘画调用
  PageUp 前进10个绘画调用
  10.Frame Debugger高级快捷键
  所有菜单都支持键盘控制。可以使用Up/Down arrow移动选项,按回车执行当前选项,按Esc关闭菜单。
  一些菜单也有快捷键。
  10.1 Texture View中的快捷键
  Ctrl+Up/Down 上移/下移当前绘画调用的纹理
  Ctrl+Plus/Minus 增加/减少选中纹理的大小
  Ctrl+Shift+Up/Down 上移/下移渲染目标
  Ctrl+Shift+Plus/Minus 增加/减少选中渲染目标的大小
  Alt+T/R 打开当前选中纹理/渲染目标的相关菜单
  相关菜单中的快捷键:
  O 原始纹理
  2 2×2纹理
  B 空纹理
  W 白色纹理
  M 多映射纹理
  10.2 Advanced Inspectors(高级监控器)中的快捷键
  Ctrl+Tab/Ctrl+Shift+Tab 循环到下一个/上一个高级监控器
  11.信息披露
  一般的性能度量都显示在屏幕顶部的状态条中。这些数据提供了一个比较你的程序完成其工作量的速
  度的度量。帧数被用于计算显示的帧率,默认是20。你可以调整它,使用以下快捷键:
  [ 减少帧数
  ] 增加帧数
  12.时间控制
  注意屏幕左上角的速度控制图标,就在信息披露下方。
  控制允许你决定你的程序的回放速度。当你正在查看一个特定帧时,控制你的程序的时间会很有用。
  其快捷键:
  小键盘+ 增加速度
  小键盘- 减少速度
  小键盘Enter 暂停/继续
  注意:PerfHUD可以冻结你的程序,通过使你的程序每次请求当前时间时返回相同的值。这模拟一个无
  限快的渲染循环,因此每帧会有相同的工作量被提交。
  注意:若你的程序已经执行了一个帧速限制功能,那么你可能需要去关闭这个功能,才能使用PerfHUD
  的时间控制、debugging(调试)和profiling(剖析)。
  13.实时测试
  实时测试提供了一个便捷的方法去快速收集关于你的程序的性能问题所在的信息。通过一个按键,你
  可以替换你的程序中的所有纹理,或使你的程序忽略所有绘画调用。通过检查这些测试中帧率的不同,
  你可以获得更多关于瓶颈领悟。
  注意:在GeForce6以上的GPU上,Frame Profiler提供了更多自动化的和精确的性能信息,关于每个绘
  画调用基础。以下测试是很有用的:
  Ctrl+T 孤立纹理单元
  迫使GPU使用2×2纹理,若帧率有显著提高,那么你的程序性能是被纹理宽度限制了。
  Ctrl+V 孤立顶点单元
  使用1×1的裁剪矩形,在顶点单元之后,去裁剪所有在管线阶段中的光栅化和遮蔽工作。此方法近
  似删减了图像管线,在顶点单元之后。并可以被用于度量你的程序性能是否被顶点转换、CPU工作量和
  总线处理所限制。
  Ctrl+N 排除GPU
  此特征模拟一个无限快的GPU,通过忽略所有DrawPrimitive()和DrawIndexedPrimitives()调用。这
  模拟了你的程序激活时的帧率,若整个图形管线没有性能代价的话。若你的帧速没有增加,那么说明
  GPU再好也不能使你的程序运行的再快了,此时说明你的程序是偏向于CPU的。
  注意:此时,CPU通过状态改变引发的额外开销也会被忽略。
  Ctrl+M 排除几何体
  此特征会减少每个绘画调用中绘制的三角形的数量,一般1次绘画调用会绘制2个三角形的整数倍,在
  界面上看起来就是一个个方块。此操作就是只绘制1个三角形。这减少了GPU中处理的几何体的数量。
  Ctrl+D 显示深度复杂度
  显示你的场景中透支(全景渲染造成的浪费)的数量。你拥有的透支越多,你的GPU处理的工作量就越
  大,这会导致场景的显示性能的降低。
  Ctrl+W 切换线框显示模式
  用线框模式显示你的整个场景,不需要任何遮蔽。
  Ctrl+1 使用红色的着色固定管道像素
  Ctrl+2 使用淡绿色的着色ps_1_1
  Ctrl+3 使用绿色的着色ps_1_3
  Ctrl+4 使用黄色的着色ps_1_4
  Ctrl+5 使用淡蓝色的着色ps_2_0
  Ctrl+6 使用蓝色的着色ps_2_a
  Ctrl+7 使用桔红色的着色ps_3_0
  Ctrl+8 使用红色的着色ps_4_0
  使用Ctrl+1..8可以开启特定的shader类型,也可以用特定的颜色绘制这些像素。你可以使用其设想这
  些版本的shader被怎么用和用在哪,也可以评估每个shader版本在你的程序中的性能影响。
  注意:shader可视化只在当一个D3D设备被创建作为一个非纯设备时工作。在PerfHud配置设置中,你可
  以迫使设备以非纯设备模式创建。
  14.自定义图像和层
  New Object Createion LED的参数说明:
  2T 使用CreateTexture()创建2D纹理
  VT 使用CreateVolumeTexture()创建体积纹理
  CT 使用CreateCubeTexture()创建天空盒子纹理
  VS 创建顶点shader
  GS 创建几何体shader
  PS 创建像素shader
  BU 创建缓冲
  IB 使用CreateIndexBuffer()创建索引缓冲
  RT 使用CreateRenderTarget()创建渲染目标
  DSS 使用CreateDepthStencilSurface()创建深度模板表面
  MSC 任何不适合其他种类的创建对象
  Graphs Locked 关闭图表的移动或改变大小的功能
  Remove All Graphs 移除这一层的所有图表
  Default Layout 重新设置当前层到默认
  Restore Layout 点击菜单项去显示层列表
  Save Layout 点击菜单按钮去保存和命名当前图像层
  Default Layout 重新保存当前层
  15. 解释默认图表
  15.1.单元应用图表
  此图表在监控你的程序的高级性能特征时很有用.当你看到一个潜在问题时,转换到Frame Profiler去冻
  结
  当前帧,并用绘画调用分析单元应用。每条线代表特有的GPU单元的使用率。
  VA 顶点集合单元
  SHD 顶点shader单元
  TEX 像素shader单元
  ROP 光栅操作单元
  15.2.计时图表
  Driver Time(ms) 每帧中CPU执行驱动代码的总时间,包括Driver Sleeping(ms)
  GPU Idle(ms) 每帧中GPU空闲的总时间
  Driver Sleeping(ms) 驱动等待GPU的累积时间
  Frame Time(ms) 前一帧到下一帧的总时间--你要保持其中图表中的线尽可能低。为了方便,以下的图表
  列
  举了一些通用帧的时间和对于的帧率。
  FRAME_TIME  17ms  34ms  50ms  75ms  100ms
  FPS         60    30    20    13    10
  注意:Frame Time(ms)和Driver Time(ms)代表的线的时间间隔是你的程序逻辑电路和操作系统花费的时
  间。
  你或许会看到突然的波动在图表中。这经常是由操作系统中在后台执行一个硬盘存取过程、纹理加载、
  或上
  下文切换导致的。
  只要波动是偶然才发生的,那么情况就是正常的。若是他们频繁地发生,那或许是由于你的程序执行CPU
  密集
  操作时效率很低。
  若Driver Time和Frame Time的线是同时波动的,那很可能是因为驱动正在从CPU到GPU加载纹理。
  若Frame Time的线波动的同时Driver Time的线没有波动,你的程序可以执行了一些CPU密集操作(比如解
  码声
  音)或硬盘存取。此时也可能是由于操作系统正在处理其他过程。
  注意:GUP Idle或许会在以上2种情况中波动,因为你没有发送数据到GPU。
  16.Debug Console图表
  Debug Console将显示所有经由DX Debug运行时的信息,此信息是你的程序经由OutputDebugString()发
  出的,
  其它的任何警告或错误都是由PerfHUD发现的。
  注意:最大支持的debug输出字符串大小是4kb,只有字符串的前80个字符才可见,若字符串没有换行符
  。
  由PerfHUD发现的资源创建事件和警告都将记录在console窗口中。
  你可以使用一些操作定制Debug Console如何工作:
  Clear Logging 清理显示窗口的记录
  Stop Logging 停止显示新纪录
  你可以设置只显示你的程序或PerfHUD的消息。
  17.Frame Debugger图表
  17.1.简单模式
  17.1.1.Texture View
  显示了当前绘画调用的每个纹理和渲染目标。纹理列举在左侧窗口,渲染目标列举在右侧窗口。
  在左侧窗口鼠标右击可以看到弹出窗口如下:
  2*2 Texture
  Black
  25% Gray
  50% Gray
  75% Gray
  White
  Horizontal gradient
  Vertical Gradient
  Color Mipmap Texture 每个mip使用一种颜色,第0级用红色,最低级用蓝色,其他级使用其他的颜色。
  你可以使用此项测试多纹理映射在屏幕上的显示精确度。
  Remove All Texture Overrides
  Tonemap 0-1 查看纹理的色调
  Save To File
  Visualize 以全屏的模式查看纹理
  17.1.2.API Call List View
  显示当前帧中的每个D3D API调用,不同类型的调用使用以下的颜色区分:
  Draw           Blue        绘画调用用蓝色
  State/Effect   Purple      状态/效果用紫色
  Lock/Unlock    Red         锁定/解锁用红色
  Perf Marker    Green       Perf标记用绿色
  Other          Black       其他用黑色
  你可以双击列表中调用跳到对应帧,并查看当前调用对应的几何体。
  17.1.3.Dependency View
  显示绘画调用在图像和帧两方面的生产者和调用者的关系。
  点击列表视图中的生产者和消费者,你将看到滑动条移动到相应的位置,你可以快速理解场景中对象之
  间
  的依赖关系。
  17.1.4.D3D Perf Events View
  略。未知用途。
  17.2.Advanced Mode
  允许你检查每个管线阶段的细节,包括:
  Vertex Assembly  获得顶点数据
  Vertex Shader  顶点shader
  Geometry Shader 几何体shader
  Pixel Shader  像素shader
  Raster Operations  光栅操作
  17.2.1.Vertex Assembly监控器
  显示选中的绘画调用的几何体,包括2个窗口:
  几何体窗口
  你可以使用鼠标左键拖动,以旋转几何体。
  顶点数据窗口
  绘画调用参数和返回标记;索引和顶点缓冲格式,大小;FVF(顶点格式)。
  通过以上窗口,你可以验证你的模型的索引格式是否正确,确定其是16bit索引,不论是什么程序。
  17.2.2.Vertex, Geometry 和 Pixel Shader监控器
  Shader监控器包括4个部分:
  源码编辑器
  位于右上方,显示当前绘画调用的顶点片段程序代码。你可以直接编辑它,并可以用搜索查找shader
  中的
  文本,还可以右击鼠标,在弹出窗口执行以下:
  Open
  Replace
  Save
  Save As
  Close
  Close All
  Comlile
  Discard Current Edits
  Restore Original Shader
  Visualize Shader
  shader常量查看器
  位于右下方,显示了所有shader中的常量和定义
  纹理查看器
  位于左上方
  采样编辑器
  位于左下方,你可以设置其属性,并右击鼠标,在弹出窗口执行以下:
  Apply Current State 应用当前采样状态到场景
  Apply Sampler State to All Samplers 拷贝当前选中的采样到其他采样
  Restore State  恢复原始采样状态
  Restore Sampler Slot States 为当前采样恢复所有采样属性
  Restore All Sampler States 恢复所有采样状态
  Expand All Samplers 扩展所有采样
  Collapse All Samplers 隐藏所有采样
  注意:采样状态编辑会覆盖当前帧的所有绘画调用。
  在所有的shader监控器中,你需要检查的:
  是否预期的shader被应用到了当前绘画调用;
  是否常量没有通过#NAN、#INF;
  是否纹理状态设置正确。
  在像素shader监控器中,你需要检查的:
  是否纹理和渲染目标纹理被使用正确;
  是否纹理过滤专题被设置正确。
  17.3.Raster Operations监控器
  显示了一些关于当前绘画调用的光栅操作(ROP)单元的信息。信息使用树状列表显示。有2个窗口,一个
  在左边,
  显示和编辑渲染状态,一个在右边,显示渲染目标。
  以下列举了光栅的属性:
  Depth State 深度
  Stencil State 模板
  Alpha Test State 透明测试
  Rasterizer State 光栅化
  Color Mask State 颜色模板
  Blend State 混合
  Vertex and Primitive State 顶点格式
  Lighting and Material State 光照和材质
  Fog State 雾
  Point and Sprite State 点精灵
  Texture State 纹理
  Tessellation State 棋盘格子
  Other State
  你可以设置其属性,并右击鼠标,在弹出窗口执行以下:
  Apply Current State Globally 应用到全局
  Restore State 恢复
  Restore Category States 恢复类型
  Restore All States 恢复所有
  Expand All Categories 扩展所有类型
  Collapse All Categories 取消所有类型
  以下渲染状态可能很耗资源:
  Zenable 深度
  Fillmode 填充模式
  ZWriteEnable 深度写入
  AlphaTestEnable 透明测试
  SRCBLEND and DSTBLEND 源混合和目标混合
  AlphablendEnable 透明混合
  Fogenable 雾
  Stencil enable 模板
  StencilTest 模板测试
  18.Frame Profiler
  Frame Profiler针对一个特点帧,自动提供性能分析,查找出消耗资源最大的绘画调用。
  18.1.简单模式
  18.1.1.每个单元的瓶颈图表
  位于下方。图表中横条的意义:
  黄色部分 总时间
  红色部分 在当前状态框中被所有调用使用的时间
  桔红色部分 被当前绘画调用使用的时间
  18.1.2.瓶颈百分比图表
  位于上方。通过图表你可以快速查看哪一个绘画调用是瓶颈,以及那一个单元是问题。
  每个单元的使用率,GPU和CPU时间,shader像素数,纹理LOD,顶点格式。
  18.1.3.State buckets
  状态栏.你可以使用默认的状态栏配置。
  18.2.高级模式
  略。
  19.Troubleshooting
  已知的问题:
  (1)PerfHUD不支持多设备,只支持第一个创建的设备。
  (2)PerfHUD可能会在使用软件顶点过程时崩溃。
  (3)当程序使用固定管道的T&L(光影转换)时,状态监控器不会显示细节信息。
  (4)当PerfHUD被激活,并且你点到关闭按钮上时,运行在窗口模式的程序可能不能正常离开。
  20.为什么驱动要等待GPU
  GPU满负荷运转是一个典型的情况,其发生在你有2个通过FIFO(先入先出队列)连接的处理器,其中一个
  提供给另一个远超过其处理能力的数据。
  此种情况显示如下,CPU提供给GPU远超过其处理能力的命令。当其发生时,所有命令开始在FIFO队列中
  构建,也叫做“push buffer”。为了避免FIFO从驱动溢出,就必须等待FIFO空出空间以放置新命令。
  图解:原图中,黄线大概在70,红线大概在30,蓝线大概在27,绿线在0.
  若是你发现帧率如下:
  (1)高,那么你可以在CPU上做更多工作,这不会影响帧率(对象裁剪,物理碰撞,游戏逻辑,AI等等)。
  (2)不富裕,你应该减少创建复杂度,以减轻GPU加载。
分享到:
评论

相关推荐

    PerfHUDAny

    PerfHUDAny可以将NVDIA的PerfHUD工具应用到任意D3D9程序上. 含源代码.

    CryEngine地形分析

    1材质排序:从PerfHUD的结果来看,Cryengine对DXAPI的调用是最为简洁的,如此多的材质,却只有如此简洁的状态切换过程,不能不令人赞叹,相比之下,OGRE或者GB之类的三流引擎做得就要差得多。材质排序已经被做到了...

    99-智慧园区数据平台方案.pptx

    99-智慧园区数据平台方案.pptx

    node-v12.11.1-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于Springboot+Vue华强北商城二手手机管理系统-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    Excel模版:工资条模板

    Excel工资条模板是一种预先设计好的电子表格文件,主要用于生成和打印员工的工资单,让员工清楚了解自己的工资组成和扣款详情。模板通常包含了以下几个关键部分: 1. **员工信息区**: - 姓名 - 员工编号/工号 - 部门 - 职位 2. **工资构成区**: - 基本工资 - 岗位工资 - 绩效奖金 - 加班工资 - 其他补贴(如交通补贴、餐补、全勤奖等) - 各项津贴(如高温补贴、取暖费等) - 其他应发收入(如年终奖、提成、福利等) 3. **扣款项目区**: - 社保扣款(养老保险、医疗保险、失业保险、工伤保险、生育保险) - 住房公积金 - 个人所得税 - 其他扣款(如迟到、旷工、违规罚款等) - 预借还款(如有) 4. **工资结算区**: - 应发工资总额 - 扣款总额 - 实发工资 5. **备注栏**: - 用于标注本月工资的特殊情况说明,如请假、调休、加班等情况。 6. **签名栏**: - 供员工确认工资数额无误后签名,也可以

    29-【智慧城市与政府治理分会场】10亿大数据助推都市治理-30页.pdf

    29-【智慧城市与政府治理分会场】10亿大数据助推都市治理-30页.pdf

    基于Springboot+Vue的租房管理系统-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    线路工区光缆中断抢险预案.docx

    5G通信行业、网络优化、通信工程建设资料。

    299-教育数据资产管理平台及配套解决方案.pptx

    299-教育数据资产管理平台及配套解决方案.pptx

    太戈编程第345题答案

    abababababababab

    基于STM32F103C8单片机设计-旋转编码器数码管显示程序KEIL工程源码.zip

    STM32学习软件编程资料,STM32F103C8单片机经典外设应用设计实例软件源代码,KEIL工程文件,可供学习参考。

    5GKPI指标定义.pptx

    5G通信行业、网络优化、通信工程建设资料。

    全业务端到端-L2题库.xlsx

    5G通信行业、网络优化、通信工程建设资料

    3M 轨道砂光机精英系列说明书

    3M 轨道砂光机精英系列说明书

    基于Springboot+Vue教师工作量管理系统-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    2023年亚太杯A题附件一,苹果图像数据集

    2023年亚太杯A题附件一,苹果图像数据集

    移动代维发电系统考试L2.xlsx

    5G通信、网络优化与通信建设

    59-《煤矿测量规程(1989版)》150.pdf

    59-《煤矿测量规程(1989版)》150.pdf

Global site tag (gtag.js) - Google Analytics