All Hail Microsoft Surface Book!

Well (in a move that probably won’t encourage much in the way of sympathy!) I have moved to the Microsoft Surface Book for my mobile Windows development.

I’ve scoured the current flotilla of laptops available today, and frankly, the MSB is the only one to come close to the Mac Air for battery life, portability, sheer ‘finesse’, and of course, not having to rely on an crappy Intel graphics chip. In fact, it beats the Mac Air, with a higher resolution display, and of course touch screen. But at a cost… more pennies, a lot more! Ouch.

There is another cost however, an unexpected cost… cue sympathy, or at least a little empathy 😉

After (very painfully) getting my dev environment set up, I fired up my model Viewer and immediately got undesirable behaviour.

1) The viewer exhibits ‘auto wireframe’ rendering around everything.
2) The viewer was unable to render Dom’s models using the uber-shader.


After some considerable volumes of ‘blue air’ faded away, I investigated further. Firing up the code in Visual Studio, I found that there are only four Texture Mapping Units (TMU’s) available to 666 for rendering on the MSB. Worrying! TMU’s allow multiple textures to be made available for a single shader, uber-shader is knocking on six TMU’s at the moment. Any modern graphics card in the past ten years should have eight or more…

I then discover why – and breathe a sigh of relief! 666 is using the Intel graphics chip to render with. Phew! To be sure, I check what the nVidia GPU should have – and discover it’s similar to the GeForce 940M, which has thirty-two TMU’s 🙂 more than enough!

This also laughably explains the crappy rendering – the ‘auto wireframe’ – of course, with Intel drivers, anything appears possible, anything apart from getting a decent rendering of course.

Now, as to why 666 using the crappy Intel chipset… ah… therein lies a lot of pain…

This goes a little techy I’m afraid, so feel free to skip ahead! When setting up the display for rendering, you have to ask the Operating System a lot of questions about display devices, contexts, pixel formats and so on. 666 does this using tech that hasn’t changed for fifteen years (of my using it)… relying on Windows GDI using a function called ‘EnumDisplayDevices’. This function basically iterates through all available devices and gives info on how to use each one.

Now, on my main dev PC – I have a motherboard mounted Intel HD 4000 (yeurch) and an AMD Radeon 7900 card. EnumDisplayDevices tells me that the first display device is the Radeon, and then the Intel. 666 uses the first available, and voila, performance 3D.*

On the MSB… EnumDisplayDevices tells me ‘Intel 520’ and… ‘Intel 520’… and ‘Intel 520′. So three (count ’em) Intel 520’s and not an nVidia in sight. Bit of a problem!

Now, turns out the MSB has a nice nVidia Control Panel, that lets me set the default graphics card! Hurrah! So I set it to use the nVidia GPU for all applications as a test, and try again.

Intel 520, Intel 520, Intel 520…


I turn to the internet, and discover that things have moved on in the past fifteen years (how dare they!). Nowadays, I should be using DXGI (DirectX Graphics Infrastructure) to query devices. Fair enough, that means updating my Windows application framework for 666… but wait… rumours abound that you can no longer hook up OpenGL when setting up with DXGI… and of course, Vulkan is now replacing OpenGL…

So, my attempt to move away from the Intel disease ridden Mac laptop platform has dropped me into the mire of bringing 666 up to modern day requirements. The best case is finding a way to make DXGI and OpenGL co-exist, the worst case is having to rewrite my entire graphics API, replacing OpenGL with Vulkan – or worse, DirectX.


All so I can dev on a laptop.

Now, don’t get me wrong – I’m not against updating 666 at all. But right now it’s not what I’d like as a ‘priority’ for development. I’d happily tackle that prior to releasing a playable of Dom, but just so I can work on my commute… it would put me back months, if not even a year of dev. Fingers crossed I can solve the DXGI / OpenGL puzzle. Someone, somewhere may have solved this if I can find it, if not and I solve it, I’ll post a blog on how.

Anyway – in other news… v1.1 of Insurmountable Odds is now complete. I just have to sort out the ePub updates and get them rolled out to the various online services, then it’s all go for Book 2!

*Radeon 7900 – ok, yes. When I bought it, it was reasonably beefy for it’s day. Nowadays, not so much.


  • Facebook
  • Twitter
  • Myspace
  • Google Buzz
  • Reddit
  • Stumnleupon
  • Delicious
  • Digg
  • Technorati
Author: Mak View all posts by

Comments are closed.

Subscribe to The Dominium Observer Newsletter!