DirectX << HSA

    General discussion

  • Hello!

    There is a little word of thought to Microsoft, but I hope to get feedback on the idea from non-corporate forumers too.

    Parallel computation has been the main trend for increasing comptutational performance for the past 15-20 years now. With GPUs becoming ever smarter, applications quickly shift to using GPGPU where ever possible. OpenCL and C++AMP as of late address these very issues. Graphics as it is, is becoming more and more general compute heavy, in terms of demand.

    The problem is that even when game developers know what they want to do, APIs are becoming a big burden, as hardware from ALL vendors surpass the features that the APIs allow to express. Coherent, shared memory across devices and host system is one of the biggest features, that PC develoeprs cannot make use of without any working API. These features eventually must become available in advanced gaming engines, where physics, AI and graphics cannot be seperated anymore and be expressed in different APIs, because they need heavy interaction with shared memory preferably.

    As far as I see, DirectX at the pace it's evolving will never meet the demands of the developers (hence Mantle is born, as the school example of MS failing to react to market trends). Expressing advanced engines in C++AMP (and DX interop let's say) is yet again not a viable option, as the reference implementation of C++AMP is built atop DirectCompute, hence it carries all it's incapabilities with it. The planned evolution of C++AMP as it is on the final page of the specification is again WAY TOO SLOW. Today's HW already surpasses even the third iteration of AMP.

    Let us imagine an ideal world, where the 2 major graphics vendors (and the 3rd wannabe competitor, whom will challange the former 2 once they can mature a viable graphics processor to match their cutting-edge CPU architecture) all agree on a versatile intermediate language: HSAIL. I am not to say whether this ideal world can be realized, but MS is on negotiating terms with these companies and is in a place to make suggestions or to poke around to see a few years ahead. So let's say everyone that counts on the desktop market agrees on HSA(IL).

    In this case, I would suggest MS to dump the current DX bytecode as intermediate, and move to HSAIL, and do a MAJOR overhaul of Direct3D and it's capabilities. The reason why C++AMP has relatively many restrictions, is because it shares too much with DirectCompute. MS should find a way of plugging in the instructions required for incremental image rendering (culling, rasterization, etc.) into HSAIL, to allow for IL compilers to make use of the fixed function HW in various GPUs (or allow for SW emulation). What would be the gain?

    • A portable and VERSATILE intermediate.
    • Have DX as an option on mobile, as all mobile HW vendors are on the HSA train.
    • Give developers the ability to write shaders in ANY LANGUAGE that the bindings have been created for. (C++ compliant shader language: template generated shaders and compute kernels for eg.)
    • Get SW render for free.
    • Reuse the same optimizers for shaders as there are in native code.

    I think MS should try to force a common, low-level IL that vendors agree on (or make them agree on it), and shift DX to using it, and lifting most of the restrictions. Creating C++AMP bindings to writing display shaders and compute kernels alike, and link them together in any way desirable, and have STL-conformant classes to support this, that would simply rock the world.


    Saturday, January 18, 2014 11:05 PM

All replies

  • Hi Meteorhead,

    Thanks for your valuable suggestions. I will report it to related engineers.



    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Monday, January 20, 2014 9:02 AM