I have no real problem, just willing to learn on this odd “Optimus” architecture…
When I installed Tumbleweed with the default Nouveau driver, it was clear that the OSS driver’s only useful task was keeping the NVIDIA chip from drawing battery power.
This was somewhat expected and I didn’d dig any deeper.
Then I decided to give the new NVIDIA driver a shot and results are puzzling at best.
Running “primusrun glxspheres” is only marginally better than using integrated graphics and “optirun glxspheres” is a distant third.
But, here is the puzzle, with the spheres at full screen (FHD, 1920x1080) Intel graphics is the best:
bruno@LT_B:~> vblank_mode=0 glxspheres
...
Visual ID of window: 0xb5
Context is Direct
OpenGL Renderer: Mesa DRI Intel(R) Haswell Mobile
...
279.900200 frames/sec - 546.006918 Mpixels/sec
278.944967 frames/sec - 544.143525 Mpixels/sec
bruno@LT_B:~> vblank_mode=0 primusrun glxspheres
...
Visual ID of window: 0xb5
Context is Direct
OpenGL Renderer: GeForce GTX 960M/PCIe/SSE2
...
228.179027 frames/sec - 445.113393 Mpixels/sec
228.148338 frames/sec - 445.053525 Mpixels/sec
Is the whole hassle of installing Bumblebee, building nvidia-bumblebee and the like useless, at least on this HW?
Or am I missing something?
Tested on Tumbleweed 20151002 Kernel 4.2.1 with Gnome, if that matters.
Hi
Not having an optimus setup, seems to me it’s not intended for local testing but remote testing [in your case discrete video] (part of the VirtualGL package: A toolkit for displaying OpenGL applications to thin clients).
So they way I see it, it’s only valid when using optirun and not by itself which may be why the confusing results?
I’m not realy surprised, on my Lenovo with I5 and HD4600 graphics performance jumped up considerably going from 13.2 to Leap42. No wonder if you take into account that the nvidia card must run under bumblebee and what Linus thinks about nvidia and optimus. This is the way to kill optimus on Linux.
Here’s the one from my laptop. It has an i5 and Optimus config.
The Intel:
knurphtlaptop:~> glmark2
=======================================================
glmark2 2014.03
=======================================================
OpenGL Information
GL_VENDOR: Intel Open Source Technology Center
GL_RENDERER: Mesa DRI Intel(R) Sandybridge Mobile
GL_VERSION: 3.0 Mesa 11.0.0
=======================================================
[build] use-vbo=false: FPS: 1495 FrameTime: 0.669 ms
[build] use-vbo=true: FPS: 1647 FrameTime: 0.607 ms
[texture] texture-filter=nearest: FPS: 1503 FrameTime: 0.665 ms
[texture] texture-filter=linear: FPS: 1483 FrameTime: 0.674 ms
[texture] texture-filter=mipmap: FPS: 1521 FrameTime: 0.657 ms
[shading] shading=gouraud: FPS: 1348 FrameTime: 0.742 ms
[shading] shading=blinn-phong-inf: FPS: 1345 FrameTime: 0.743 ms
[shading] shading=phong: FPS: 1188 FrameTime: 0.842 ms
[shading] shading=cel: FPS: 1136 FrameTime: 0.880 ms
[bump] bump-render=high-poly: FPS: 758 FrameTime: 1.319 ms
[bump] bump-render=normals: FPS: 1592 FrameTime: 0.628 ms
[bump] bump-render=height: FPS: 1469 FrameTime: 0.681 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 748 FrameTime: 1.337 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 342 FrameTime: 2.924 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1351 FrameTime: 0.740 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 348 FrameTime: 2.874 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] effect=shadow:windows=4: FPS: 690 FrameTime: 1.449 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 407 FrameTime: 2.457 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 586 FrameTime: 1.706 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 414 FrameTime: 2.415 ms
[ideas] speed=duration: FPS: 856 FrameTime: 1.168 ms
[jellyfish] <default>: FPS: 734 FrameTime: 1.362 ms
[terrain] <default>: FPS: 79 FrameTime: 12.658 ms
[shadow] <default>: FPS: 578 FrameTime: 1.730 ms
[refract] <default>: FPS: 197 FrameTime: 5.076 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1367 FrameTime: 0.732 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1304 FrameTime: 0.767 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1370 FrameTime: 0.730 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1362 FrameTime: 0.734 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1298 FrameTime: 0.770 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1347 FrameTime: 0.742 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1337 FrameTime: 0.748 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1288 FrameTime: 0.776 ms
=======================================================
glmark2 Score: 1045
=======================================================
The NVIDIA:
knurphtlaptop:~/> optirun glmark2
=======================================================
glmark2 2014.03
=======================================================
OpenGL Information
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: GeForce 610M/PCIe/SSE2
GL_VERSION: 4.5.0 NVIDIA 352.41
=======================================================
[build] use-vbo=false: FPS: 270 FrameTime: 3.704 ms
[build] use-vbo=true: FPS: 297 FrameTime: 3.367 ms
[texture] texture-filter=nearest: FPS: 289 FrameTime: 3.460 ms
[texture] texture-filter=linear: FPS: 292 FrameTime: 3.425 ms
[texture] texture-filter=mipmap: FPS: 294 FrameTime: 3.401 ms
[shading] shading=gouraud: FPS: 286 FrameTime: 3.497 ms
[shading] shading=blinn-phong-inf: FPS: 282 FrameTime: 3.546 ms
[shading] shading=phong: FPS: 276 FrameTime: 3.623 ms
[shading] shading=cel: FPS: 275 FrameTime: 3.636 ms
[bump] bump-render=high-poly: FPS: 247 FrameTime: 4.049 ms
[bump] bump-render=normals: FPS: 296 FrameTime: 3.378 ms
[bump] bump-render=height: FPS: 297 FrameTime: 3.367 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 272 FrameTime: 3.676 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 220 FrameTime: 4.545 ms
[pulsar] light=false:quads=5:texture=false: FPS: 289 FrameTime: 3.460 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 163 FrameTime: 6.135 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] effect=shadow:windows=4: FPS: 167 FrameTime: 5.988 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 199 FrameTime: 5.025 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 201 FrameTime: 4.975 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 207 FrameTime: 4.831 ms
[ideas] speed=duration: FPS: 247 FrameTime: 4.049 ms
[jellyfish] <default>: FPS: 244 FrameTime: 4.098 ms
[terrain] <default>: FPS: 68 FrameTime: 14.706 ms
[shadow] <default>: FPS: 226 FrameTime: 4.425 ms
[refract] <default>: FPS: 121 FrameTime: 8.264 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 292 FrameTime: 3.425 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 271 FrameTime: 3.690 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 290 FrameTime: 3.448 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 290 FrameTime: 3.448 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 277 FrameTime: 3.610 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 292 FrameTime: 3.425 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 289 FrameTime: 3.460 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 283 FrameTime: 3.534 ms
=======================================================
glmark2 Score: 251
=======================================================
Doing a little search on how the score of the NVIDIA can be so much lower than the Intel. I know it’s not much of a video card, but if my scores were that low, I would be very discrete too :D.
Great job, Malcolm: here are my 5 cents from an ASUS N551JW with i7
4720HQ + HD4600 + GTX960M (Optimus).
<snip>
Apparently even seasoned ATIs can run circles around bumblebee…
Hi
It would appear there needs to be work done to improve? I’m going to
stick with intel gpu’s if I can…
I also fixed the runtime libpng warning by stripping the effect-2d.png
image.
–
Cheers Malcolm °¿° LFCS, SUSE Knowledge Partner (Linux Counter #276890)
SUSE Linux Enterprise Desktop 12 | GNOME 3.10.1 | 3.12.44-52.18-default
If you find this post helpful and are logged into the web interface,
please show your appreciation and click on the star below… Thanks!
For reference, I got the following result from a Toshiba Satellite Pro C850, with “Intel 3rd Gen Core processor Graphics Controller”, openSUSE 13.2, (KDE 4.14.9)
glmark2
=======================================================
glmark2 2014.03
=======================================================
OpenGL Information
GL_VENDOR: Intel Open Source Technology Center
GL_RENDERER: Mesa DRI Intel(R) Ivybridge Mobile
GL_VERSION: 3.0 Mesa 10.3.7
=======================================================
[build] use-vbo=false: FPS: 1129 FrameTime: 0.886 ms
[build] use-vbo=true: FPS: 1775 FrameTime: 0.563 ms
[texture] texture-filter=nearest: FPS: 1639 FrameTime: 0.610 ms
[texture] texture-filter=linear: FPS: 1642 FrameTime: 0.609 ms
[texture] texture-filter=mipmap: FPS: 1703 FrameTime: 0.587 ms
[shading] shading=gouraud: FPS: 1328 FrameTime: 0.753 ms
[shading] shading=blinn-phong-inf: FPS: 1322 FrameTime: 0.756 ms
[shading] shading=phong: FPS: 1317 FrameTime: 0.759 ms
[shading] shading=cel: FPS: 1317 FrameTime: 0.759 ms
[bump] bump-render=high-poly: FPS: 657 FrameTime: 1.522 ms
[bump] bump-render=normals: FPS: 1862 FrameTime: 0.537 ms
[bump] bump-render=height: FPS: 1828 FrameTime: 0.547 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1385 FrameTime: 0.722 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 740 FrameTime: 1.351 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1610 FrameTime: 0.621 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 493 FrameTime: 2.028 ms
[desktop] effect=shadow:windows=4: FPS: 715 FrameTime: 1.399 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 473 FrameTime: 2.114 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 458 FrameTime: 2.183 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 492 FrameTime: 2.033 ms
[ideas] speed=duration: FPS: 1095 FrameTime: 0.913 ms
[jellyfish] <default>: FPS: 913 FrameTime: 1.095 ms
[terrain] <default>: FPS: 110 FrameTime: 9.091 ms
[shadow] <default>: FPS: 448 FrameTime: 2.232 ms
[refract] <default>: FPS: 118 FrameTime: 8.475 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1521 FrameTime: 0.657 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1512 FrameTime: 0.661 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1498 FrameTime: 0.668 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1510 FrameTime: 0.662 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1516 FrameTime: 0.660 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1396 FrameTime: 0.716 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1510 FrameTime: 0.662 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1537 FrameTime: 0.651 ms
=======================================================
glmark2 Score: 1168
=======================================================
dean@linux-54cw:~>
Just a warning: there are test modes in which the NVIDIA chip really outshines the integrated one.
Apparently they involve not actually drawing the screen… so we might have an idea of where the bumblebee bottleneck really is.
Just an example:
Well the Intel is used to actually draw the screen.
That is the odd thing about Optimus it uses the Intel to render and if used the NVIDIA as a compute engine the rendering still done by Intel’
Personally I call it FrankenVideo
I think what happened is that Intel started shipping CPU with GPU onboard. and NVIDA thought the would lose market.and in general Intel GPU are dogs compared to NVIDA and AMD GPU but they also are easy on batteries which neither AMD or NVIDIA chips are. So a devils pack was made and NVIDIA came up with Optimus which kept the chips rolling out the doors. But that’s just my opinion
If we are to describe a hardware configuration in which all the display devices are (internally) directly attached to the Intel gpu, then
In typical light duty use, the Intel gpu is used to both render the screen and output it to the display device(s). The nvidia sits by idle in a low power state.
In usage cases with more demanding graphics, the nvidia gpu is used to render the screen and hands that finished data to the Intel gpu, which functions solely as a dumb output to the display device(s)