Dolphin, the GameCube and Wii emulator - Forums

Full Version: Vertex Streaming on Intel HD Graphics Hardware
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I posted in the Gamecube section about an issue I am having related to vertex streaming in Metroid Prime on my Microsoft Surface Pro 2 tablet, which has an i5 4300u and an HD 4400, and am re-posting here for anyone else whom this may concern.

For the map screen in Metroid Prime to be rendered at an acceptable frame rate in the newest builds your video card must support the latest openGL 4.4 extensions for the correct vertex streaming cache to work.  Versions of the emulator prior to 4.0-2595 featured an option for a hacked version of vertex streaming that is necessary for good speed in certain games but this option has since been removed, leaving older graphics chips unable to process vertex streaming correctly, leading to very poor frame rates in parts of many games.  I understand the justification Dolphin's developers have given for needing to integrate proper vertex streaming at the driver level, and in doing so dropping support for legacy hardware, but additionally they dropped support for all Intel graphics hardware, legacy or otherwise, which is in all other respects capable of running the emulator quite well.  Intel has not made any commitment to implementing openGL 4.4 support in their drivers so it seems for many of us without the capability of upgrading our graphics chips we are out of luck in getting the best of the recent speed and sound improvements and the vertex streaming hack. He giveth with one hand and taketh with the other. 

In my case, Metroid Prime runs at 60fps in the newest builds almost all the time, which is incredible on a 10" tablet, but only 24fps in the map screen, which makes for an extremely jarring gameplay experience.  Older builds give the solid 60fps in the map screen, but shy quite a bit from the 60fps during normal gameplay and have sound glitches. 

Is there an unofficial build that features the old vertex streaming hack in addition to all the improvements made to dolphin in the past year?  If not, would it be possible to create one, and if so, would anyone consider making one for all the intel HD users? 
I've rebased the VertexStreamingHack some months ago: https://github.com/degasus/dolphin/tree/VSH
It should still apply well on master (if not, just ping me to rebase it again), but you have to build dolphin by yourself :/

But as far as I know, the VSH isn't needed anymore at all on intel GPUs. The buffer_storage path should be as fine.
(05-11-2015, 08:06 PM)degasus Wrote: [ -> ]I've rebased the VertexStreamingHack some months ago: https://github.com/degasus/dolphin/tree/VSH
It should still apply well on master (if not, just ping me to rebase it again), but you have to build dolphin by yourself :/

But as far as I know, the VSH isn't needed anymore at all on intel GPUs. The buffer_storage path should be as fine.

Thanks for your reply. Doing some further sleuthing I've discovered that the map screen slowdown might actually be a compounded issue not caused exclusively by the absence of the vertex streaming hack, that it may also have something to do with how Dolphin handles line-width geometry shaders, whatever these are, which was changed in versions after 4.0-4674, according to this issue query. I tested 4674 myself and while the framerate using D3D in the map screen is around half of what it should be, the vps reads 60, so the sound at least plays back perfectly. I will attempt to add the VSH in the link you provided to this revision and hopefully everything should be 100% fixed.

Without any further modification to the master files I think 4.0-4674 is probably best for Metroid Prime for Intel HD users. Setting the resolution at 1x or 1.5x native seems to give the best performance, and even at 30fps map rotation is smooth enough. I'll have to test other games to see if line-width geometry shader performance is affected on Intel graphics in the latest versions of Dolphin.
If you want to do a quick test, degasus was kind enough to compile one semi-recent VSH build: 4.0-5399, which is the one I use. It's still newer than 4674, so it may help you test whether the VSH is important before you commit to building Dolphin yourself.
(05-14-2015, 01:12 PM)Aleron Ives Wrote: [ -> ]If you want to do a quick test, degasus was kind enough to compile one semi-recent VSH build: 4.0-5399, which is the one I use. It's still newer than 4674, so it may help you test whether the VSH is important before you commit to building Dolphin yourself.

Thanks for the link, Aleron.  I tried out that build but unless I somehow missed it there doesn't seem to be any option for enabling VSH in the executable, nor did I observe any noticeable improvement in frame rate over the current master version, with both drawing about 24 fps and vps.  Is there any way to check if the VSH is being utilized?
This build enables VSH by default. As there was no performance gain, there is no need to look for VSH any more Wink
Remember also that the performance difference depends upon what's on screen. I get the biggest gain (~10 FPS over master) during scenes with heavy fog, as I like to use per-pixel lighting, and that puts a lot of strain on the GPU.
(05-14-2015, 03:46 PM)degasus Wrote: [ -> ]This build enables VSH by default. As there was no performance gain, there is no need to look for VSH any more Wink

Unless of course it is a combination of both the VSH and the line-width geometry shaders that gives the best performance. The build linked had one of the two, but not both. It's an interesting hypothesis, though I don't think I want to keep going down that rabbit hole...

 I'm actually so happy with overall D3D performance that using OpenGL, even with better frame rates in the map screen, is not  particularly attractive short of this VSH business.  It seems no matter the recourse something will suffer, but having 60fps in every facet of gameplay other than the map screen is good enough for me, especially on a 10" tablet with no real graphics card.

Thanks for all the support!