[Part 1] Measuring CPU Draw Call Performance

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
(Part 2 - Much more appropriate settings!)

Before Intel released their Core 2 architecture, their CPUs had the same level of draw call performance as their AMD performance equivalents. Trouble is, Core 2 was several times (>3x) better at handling draw calls then it's predecessors, as well as AMD's competing architectures.

The draw call gap has only been widening, and AMD has not made the same leap in performance. An FX 8350 has damn near the same performance deficit with draw calls, as a 965 BE. With AMD making a big hubbub over Zen's gaming capability, they better have made the same jump as Intel, or it's dead in the water.

Sure, there's Direct3D 12 and Vulkan, but those APIs aren't going to be back-ported. Oblivion's still going to be stuck with a crummy Direct3D 9 renderer.


Now that we have a firm date for Zen's release, it's time we collect some data. My initial idea was to compare performance in Fallout New Vegas, with an emphasis on draw calls, but the creator of ENBSeries (reverse engineers Bethesda's renderers) pointed me to an excellent Direct3D 9 draw call demo, which you can download here, or from this mirror.

vH6rjT.jpg

And my driver settings:

yQYJut.jpg

Post your specs, the draw calls, and the framerate displayed in the demo. Keep the number of rocks and ships the same, as well as having instancing disabled. You can use the arrow keys to fine tune the object sliders.


The second post of the thread will be where I compile our results. Use the format below when posting them:


CPU:
GPU:
GPU Driver:
OS:

Ships:
Rocks:
Draw Calls:
FPS:
 
Last edited:
  • Like
Reactions: .vodka

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Results

3000_6000.png


MajinCry
CPU: Phenom II x4 965 BE @ 3.4ghz
GPU: AMD 7850 2GB
GPU Driver: 16.12.2
OS: Windows 7 64bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.02 - 7.20


TheElf
CPU: g1820
GPU: Gtx650
GPU Driver: 378.49
OS: Windows 10 64bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~9.4


f2bnp
CPU: FX 8320 @ 4GHz
GPU: RX 480 8GB
GPU Driver: 16.12.1
OS: Windows 10 64bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.11 - 7.31


Face2Face
CPU: i7 5820K @ 4.25GHz
GPU: GTX 980 Ti
GPU Driver: 378.66
OS: WIndows 10 Pro 64bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 14.85


Mr. Evil
CPU: FX 8370E
GPU: Fury
GPU Driver: 17.1.2
OS: Win 7 x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.02-7.25


.vodka
CPU: i5 2500k @ 4.5GHz
GPU: Sapphire R9 290 Tri-X @ 1075/1375
GPU Driver: 17.2.1, configured as per OP
OS: Windows 10 Pro x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 13.95-14.07

---

CPU: i5 2500k @ 5.1GHz
GPU: Sapphire R9 290 Tri-X @ 1075/1375
GPU Driver: 17.2.1, configured as per OP
OS: Windows 10 Pro x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 15.53-15.85


SPBHM

CPU: i5 2310 stock
GPU: HD5850 stock
GPU Driver: 15.11.1
OS: Windows 10 64bit

Ships: 3001
Rocks: 6017
Draw Calls: 9039
FPS: 9.55

---

CPU: i5 2310 stock
GPU: HD5850 stock
GPU Driver: 10.7
OS: Windows XP SP3

Ships: 3001
Rocks: 6017
Draw Calls: 9039
FPS: 8.49


dogen1
CPU: Pentium G3258 4.2GHz
GPU: GTX 950
GPU Driver: 378.49
OS: Windows 7 64 bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 16.50


Lebdnil
CPU: Core i5-6600 stock (3.83GHz)
GPU: HD530 integrated (1.15GHz)
GPU Driver: Intel 4590
OS: Windows 10 64 bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~11.2


FrostigerFinger
CPU: Intel Core i7 860 @ 3.60Ghz
GPU: AMD Radeon HD 7950
GPU Driver: 16.12.1
OS: Windows 7 64 bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~9.05
 
Last edited:
  • Like
Reactions: Drazick

TheELF

Diamond Member
Dec 22, 2012
3,973
730
126
CPU: g1820
GPU: Gtx650
GPU Driver: 378.49
OS: Windows 10 64bit
Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~9.4

AMD Phenom II X4 965 (125W, BE) vs Intel Celeron G1820
7+35% = 9.45 so basically this is testing your single thread score,no wonder that you have the feeling that amd lags behind in draw calls if it's based on single core performance.
Dl8pDkn.jpg
 
  • Like
Reactions: MajinCry

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
CPU: g1820
GPU: Gtx650
GPU Driver: 378.49
OS: Windows 10 64bit
Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~9.4

AMD Phenom II X4 965 (125W, BE) vs Intel Celeron G1820
7+35% = 9.45 so basically this is testing your single thread score,no wonder that you have the feeling that amd lags behind in draw calls if it's based on single core performance.

Draw calls aren't too affected by single threading prowess, actually. Supposing my test I did with a user over on the ENB forums is valid, the i7 920 is just a tad better at ST than my 965. In Fallout 4, however, when we purposely made the scene draw call limited, he got a steady 60 whilst I got ~15fps. Fits perfectly with AMD's draw call deficit. See this post by the ENB dev.

If i remember, this was not the same in times of Pentium4, Core architecture did these improvements and each generation usually do better. According to the tests, increasing frequency of AMD cpu have very little impact on draw calls performance, while increasing cpu frequency of Intel affect it almost linear.

Also different motherboards for Intel play some role too (up to 10-20%). Not just draw calls performance, but triange count per second (in dx9 at least) limited for AMD cpu.

Very stupid that AMD Athlon x2 gives about same bottleneck as tested more recent releases (for 3 or 4 years ago tested). In dx11 things should be different, but still i think the problem exists.

I wonder if Intel's bottom-of-the-barrel low end were gimped somehow.
 
  • Like
Reactions: Drazick

TheELF

Diamond Member
Dec 22, 2012
3,973
730
126
Look at the screenshot,I don't know what the test in fallout did but the demo from your link hits 48% usage on one thread (50% is one of two cores so it uses 96% of a single core) draw calls might not have anything to do with singlecore but this here demo is measuring single core performance.
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Look at the screenshot,I don't know what the test in fallout did but the demo from your link hits 48% usage on one thread (50% is one of two cores so it uses 96% of a single core) draw calls might not have anything to do with singlecore but this here demo is measuring single core performance.

I wonder if there's driver differences at play. Don't NVidia GPUs (post 9800GTX) have a software scheduler, which puts a bigger burden on the CPU? Curious to see how an AMD GPU would fare on the same setup.
 
  • Like
Reactions: Drazick

TheELF

Diamond Member
Dec 22, 2012
3,973
730
126
For this demo it doesn't matter since it only runs two threads, main thread tops out while the driver hovers at 16% it has plenty of CPU resources left to run faster if it had to.

And no, if you are referring to the threaded driver it just works similar to dx12 cutting up the workload into several threads so they can be dealt with quicker,it's still the same workload.
 

TheELF

Diamond Member
Dec 22, 2012
3,973
730
126
Maybe running this test with instancing on as well would shed more light into the matter.
Now you see that the driver practically disappeared dropping to below 0.5%
,in a game that has several threads this kind of difference is substantial.
QsAQQzo.jpg
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Maybe running this test with instancing on as well would shed more light into the matter.
Now you see that the driver practically disappeared dropping to below 0.5%
,in a game that has several threads this kind of difference is substantial.

It seems that my Direct3D 9 driver is doing quite a bit less work (~0.24%, doubled for parity with your dual core), and my framerate is still lower.
IxjYsf.jpg
IxjYsf.jpg[

Now I'm curious.
 
  • Like
Reactions: Drazick

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Actually, I just noticed something. If you set one slider to min, and the other to max, instancing makes a massive difference. I think this demo's bugged somehow, when throwing in different base models to instance.

OLVxaR.jpg

For unadulterated draw calls, however, it seems on-point.

Edit: Btw, the framerate dropped when taking a screenshot. Getting ~170fps with instancing on the same scene in the above screenshot.
 
  • Like
Reactions: Drazick

f2bnp

Member
May 25, 2015
156
93
101
f2bnp
CPU: FX 8320 @ 4GHz
GPU: RX 480 8GB
GPU Driver: 16.12.1
OS: Windows 10 64bit
Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.11 - 7.31
 
  • Like
Reactions: MajinCry

TheELF

Diamond Member
Dec 22, 2012
3,973
730
126
It seems that my Direct3D 9 driver is doing quite a bit less work (~0.24%, doubled for parity with your dual core), and my framerate is still lower.

Now I'm curious.
Frame rate is tied to how fast the main thread runs,and not the driver
In your first screnie you have 24.9% so one core is fully loaded,on the other it only runs at 6.7 so you get 50 instead of 170FPS
 

Face2Face

Diamond Member
Jun 6, 2001
4,100
215
106
CPU: i7 5820K @ 4.25GHz
GPU: GTX 980 Ti
GPU Driver: 378.66
OS: WIndows 10 Pro 64bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 14.85

I've seen frame rates go from 11.5 to 15 FPS. Seems to vary.

dc_zpsxa17d2ul.png
 

Mr Evil

Senior member
Jul 24, 2015
464
187
116
mrevil.asvachin.com
CPU: FX 8370E
GPU: Fury
GPU Driver: 17.1.2
OS: Win 7 x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.02-7.25

The main thread uses 11%, which is about 1 whole core. The driver thread uses only 3%.
 

.vodka

Golden Member
Dec 5, 2014
1,203
1,537
136
CPU: i5 2500k @ 4.5GHz
GPU: Sapphire R9 290 Tri-X @ 1075/1375
GPU Driver: 17.2.1, configured as per OP
OS: Windows 10 Pro x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 13.95-14.07

CGBsVo.png



----------

CPU: i5 2500k @ 5.1GHz
GPU: Sapphire R9 290 Tri-X @ 1075/1375
GPU Driver: 17.2.1, configured as per OP
OS: Windows 10 Pro x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 15.53-15.85

3xXVCV.png
 
  • Like
Reactions: Drazick

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Sweet, we have some traffic now.

CPU: FX 8370E
GPU: Fury
GPU Driver: 17.1.2
OS: Win 7 x64

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 7.02-7.25

The main thread uses 11%, which is about 1 whole core. The driver thread uses only 3%.

TheElf pointed out the same thing. I'm going to come up with a couple of additional slider combos for us to try. See if the numbers get any different, as I expected Intel's CPUs to get in the high twenties or low thirties.
 

SPBHM

Diamond Member
Sep 12, 2012
5,056
409
126
since it's DX9 it can run in a lot of different hardware and versions of Windows, I would be curious to see a more recent VGA on older Windows vs Win10
but what I had to test was this

CPU: i5 2310 stock
GPU: HD5850 stock
GPU Driver: 15.11.1
OS: Windows 10 64bit
Ships: 3001
Rocks: 6017
Draw Calls: 9039
FPS: 9.55

CPU: i5 2310 stock
GPU: HD5850 stock
GPU Driver: 10.7
OS: Windows XP SP3
Ships: 3001
Rocks: 6017
Draw Calls: 9039
FPS: 8.49

can't say for sure if the advantage is caused by Win10 or newer driver, probably both.

also not sure if it's important but I think it was running in a window at 1024x768, also the FPS keeps jumping a bit, I used what looked like some of the lowest FPS but fairly stable for a few sec.
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
since it's DX9 it can run in a lot of different hardware and versions of Windows, I would be curious to see a more recent VGA on older Windows vs Win10
but what I had to test was this

-snip-

can't say for sure if the advantage is caused by Win10 or newer driver, probably both.

also not sure if it's important but I think it was running in a window at 1024x768, also the FPS keeps jumping a bit, I used what looked like some of the lowest FPS but fairly stable for a few sec.

I do remember getting higher framerates in general, back when I had an XP partition to compare Windows 7 to. Also been told that Windows 10 is leaner in general than 7, so I wouldn't be surprised.
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Screenshot_Max_rocks_min_ships.png


With instancing off, 12 fps. With instancing on, 170fps & driver drops to <1.0 core utilization. I'll make a new thread tomorrow, focusing on having mostly just rocks being rendered.
 

dogen1

Senior member
Oct 14, 2014
739
40
91
CPU: Pentium G3258 4.2GHz
GPU: GTX 950
GPU Driver: 378.49
OS: Windows 7 64 bit
Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 16.50
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
CPU: Pentium G3258 4.2GHz
GPU: GTX 950
GPU Driver: 378.49
OS: Windows 7 64 bit
Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: 16.50

At this point, It's pretty clear that Intel's CPUs scale almost linearly with draw calls, whereas AMD's have little to no improvement. Nice to have the numbers to prove it.
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Hard to say since all three samples have more or less the same single thread speed.

Phenom compared to fx@ ~4Ghz.
http://www.cpu-world.com/Compare/770/AMD_FX-Series_FX-8350_vs_AMD_Phenom_II_X4_965_(125W__BE).html

According to the Cinebench benchmark, Piledriver has slightly higher ST performance at the same clocks. If AMD's CPUs had similar scaling to Intel, the scores in the draw call benchmark would be along the lines of:

965 BE @ 3.4ghz: 7.02
8320 @ 4ghz: 8.49
i5 2500k @ 4.5ghz: 13.95
i5 2500k @ 5.2ghz: 15.53

700 mhz diff = 1.58fps
100 mhz diff = 0.23fps

But we don't see that. This will be more pronounced in the next text, since the app will take up way less CPU time.
 

Lebdnil

Junior Member
Jul 13, 2016
11
8
81


CPU: Core i5-6600 stock (3.83GHz)
GPU: HD530 integrated (1.15GHz)
GPU Driver: Intel 4590
OS: Windows 10 64 bit

Ships: 3000
Rocks: 6000
Draw Calls: 9021
FPS: ~11.2



CPU: Core i5-6600 stock (3.83GHz)
GPU: HD530 integrated (1.15GHz)
GPU Driver: Intel 4590
OS: Windows 10 64 bit

Ships: 3000
Rocks: 6000
Draw Calls: 23 (instancing)
FPS: ~19.5

Byes