2024年4月16日发(作者:)
OpenGL Benchmark
Benchmark是评测图形加速卡性能的重要工具。目前针对OpenGL/D3D的benchmark
非常地多。OpenGL的Benchmark大致可划分为三类:
Spec的标准测试程序,glPerf3.12和Spec OPengl ViewPerf7.1a;
一些个人或公司完成的独立测试程序,oglbench,glexcess,DroneZMark,glMark;
基于Game的性能测试:QuakeIII,UT2003,aquad mark 2003,wolfstein,serious sam SE;
其中最主要的两个测试为:glViewPerf7.1a和QuakeIII。
目前来看,OpenGL benchmark的性能测试结果都是不完整的,它总是针对图形加速卡
的某个方面设计,同时这些测试程序都不能给出一些参数化的结果,目前还没有一个
OpenGL Benchmark能够和D3D的测试程序3D mark2000~2003系列相媲美。
1 已有测试程序分析
1.1 Spec OpenGL Viewperf
它完全是一个针对CAD应用程序类开发的OpenGL测试,针对每个CAD程序,抽取
一个最典型的3D Mesh,然后测试不同光照条件下的绘制速度和wireframe模式的绘制速度。
目前包含如下的CAD 3D模型:
3ds max
IBM's Data Explorer
Intergraph's DesignReview
LightScape;
Pro-E;
Unigraphics V17
它的测试目标是针对真实应用程序做性能测试。这也是测试程序最基本的思路。事实上,
CAD应用程序为了能够具有最广泛的适用性和可移植性,它们都不使用OpenGL高版
本的扩展功能,从而使得应用程序无法充分利用图形加速卡的特性,大大降低了测试程
序的可信度。
OpenGL Spec Viewperf的主要测试内容:
我们可以认为Spec ViewPerf主要测试的内容是Transform & Lighting,三角形的数
目甚多,三角形的边长很小;
如果一个图形加速卡拥有更高的核心频率和更多的T&L(或VS),它将获得更高的分数;
光照计算
几何变换;
Flat-Shading
Smooth-shading;
Wire-frame Rendering;
简单纹理;
完全针对立即模式测试,immediate mode;
它的主要缺陷在于:
不能充分利用OpenGL 1.3及其以上版本特性;(Vertex Program, Fragment
Program);
不能检测图形加速卡的Fill Rate,而这些都是Game和Visualization以及Simulation
所必需的;
多纹理贴图,multi-texture;
多光照计算:8-光源(大部分图形加速卡支持一次8光源的计算);
Depth/Stencil/Alpha Test性能测试;
OpenGL Super Buffer Test(Similar to D3D’s Vertex Buffer/Index Buffer);
Vertex Program/Fragment Program/Shading Language Speed;
参考链接:
/gpc//opc_
1.2 Quake III
如果使用GLtrace对Quake III测试程序进行性能分析,我们发现QuakeIII的图元都是
通过glDrawElements完成的,同时每个图元包含1或者2个纹理;纹理的类型包含
GL_RGB,GL_RGBA和GL_*_S3TC。同时每个三角形的边长都比较大。根据对QuakeIII的
性能调整跟踪,大家修改GLtrace的源代码,就能够做性能优化跟踪了。具体方法我就不描
述了。我们发现,QuakeIII不需要做光照计算,同时仅仅设置简单的几何变换。
根据我在OpenGL 性能优化讲座中提到的测试结果表明,Quake III是一个极好的针对
FillRate进行测试的应用程序,将QuakeIII的分数x10M大致是这个显示卡的Pixel Fill
Rate。
缺陷:
对于速度特别快的图形加速卡,无法体现Vertex Shader和Multi-Pixel Shader的能力。
1.3 其他测试
目前大部分测试程序仅仅使用OpenGL 1.3及其一下版本的API,除Aqad Mark 2003
外,我们无法从这些测试程序中获得关于图形加速卡OpenGL 驱动更多的信息。下面
我将尝试探讨OPENGL Driver的性能测试的主要参数和架构。
2 OpenGL Benchmark 主要参数与内容
Quake III使用LightMap替代光照计算;
几何变换非常简单;
使用1~2纹理;
对于2个纹理使用相同的纹理坐标;
最多使用6个Texture对一个图元组作Multi-Pass Rendering;
对Depth Test使用GL_LEQUAL;
多数情况下使用Alpha Test和Alpha Blend;
使用glDrawElements绘制图元;
每帧大约20,000~40,000个三角形;
2.1 OpenGL BenchMark内容
我曾经在系列讲座的1/2/3种描述了OpenGL driver的体系结构和典型的OpenGL/D3D
硬件体系结构,事实上它们应该构成OpenGL Benchmark的核心内容。
由于OpenGL Immediate Mode仅仅能够测试,所有我们可以使用Immediate Mode 测试
OpenGL驱动程序的FFGP(Fixed Function Graphics Processing)功能和光照处理能力。
OpenGL Benchmark 的主要测试内容:
2.2 OpenGL benchmark参数
根据上面的分析,我们可以设定如下的测试参数:
FFGP (Immeidate Mode ):
Triangels/1Light/Second
Triangels/4Light/Second
Triangels/8Light/Second
Triangles/0 Lights/Second
Triangles/WireFrame/Second
Pxiel Fill Rate:
M Pixel /s for color buffer
M Pixel /s for Depth/Stencil buffer
Flat-shading/Smooth Shading
Alpha Belnding
OpenGL extension Detection;
Immediate Lighting: 1 lights, 4 lights/8 Lights;
Immediate Transform & Lighting: glDrawElements and WireFrame rendering;
Single performance Test for Color Buffer Filling,Depth Buffer Filling,Stencil Buffer
Filling,Pixel Fill Rate;
Flat-Shading/Smooth Shading;
Multi-Texture texture mapping;
Super Buffer Test;
Vertex Program Test;
Fragment Program Test;
OpenGL Shading Languages;
Super Buffer Test:
Triangels/1Light/Second
Triangels/4Light/Second
Triangels/8Light/Second
Triangles/0 Lights/Second
Triangles/WireFrame/Second
Multi-texture
Pixels/1 texture
Pixels/2 textures
Pixels/4 textures
Pixels/8 textures
Vertex Program:
Vertex Blend, Triangles/S
Fragment Program:
Per-pixel Normal, Pixel /s
Per-pixel Lighting, Pixel /s
Multi-Sample
Pixel /s
4 OpenGL Benchmark的功能
4.1 Multi-Display Resolution
4.2 Demo Mode Vs. Benchmark Mode
4.3 Pixel Format Selection
4.4 Extension support Detection
4.5 Reasonable Result reports
4.6 Avoid Driver Optimization for special Tests


发布评论