Before we begin, this discussion is about dropping DX9 from 2.0 Final, not from CTP. DX9 won't be dropped from CPT.
I'm strongly in favour of dropping DX9. Let's see the DX9 renderer:
- Most stable, mature and robust among the RenderSystems. Supports "hard" features like multi-monitor with ease.
- Best support for Windows XP (still has large market share, specially in China, where we also have a large often-silent Ogre3D user base)
- As of 1.x and 2.x CTP, the fastest RS.
- Doesn't support new features: Constant Buffers (BIG downside!), Texture Arrays (BIG!), Texture Buffers (needs to be workarounded with VTF), Instancing with instanceCount embedded to the shader, MultiDraw Indirect; compute, geometry and tesselation shaders.
- Slower compared to DX11 and GL3+ (after the refactoring is complete). A lot of API overhead.
- Too different compared to the other render systems
1. WIth HLMS development, I'm fixing many bugs in GL3+. The same will happen to DX11. Not to mention their performance will outmatch DX9. These render systems should be far more stable and usable when 2.0 Final is ready.
With Hlms, there is no more need to worry that you forgot to set some shader or a material to trivial objects (like a debug overlay) or even important objects, which is one of the reasons DX9 looks more stable than the others.
2. OpenGL makes up for Windows XP support. UE4 chose this path. The catch is that users require more up to date drivers than their D3D9 counter parts. Some Ogre3D users may be affected by this (I.e. medical solutions' customers don't tend to care about drivers and stuff) but those specific cases could be (for example) addressed by including modern drivers of the big 3 (Nvidia, Amd & Intel) with the installation package (I ignore the legality of such approach) or recommending Windows Vista/7 (so they can use D3D11 which is guaranteed they will get). It's not really a showstopper.
3. DX9 requires double of man resources. We just don't have enough time to support so many RenderSystems (D3D11+, D3D12 probably, GL3+, GLES 2). You can do most of what you can do in 11, 12 & GL3 in DX9. However much slower, and some stuff needs workarounds. Most of what can be done in GL3+, can be easily ported to D3D11. On DX9, we have to rewrite the whole thing just for it. I fear the community will demand us to keep the feature level of DX9 similar to the others, where this is possible but unreasonable.
ES2 is in a similar position, but we have here the advantage that ES2 is more limited than DX9, and nobody actually expects the feature level of ES2 to barely compare with desktop DX11 or GL3+.
4.The GLSL parser we have allows us, for ES2, to let ES2 behave like if it had uniform buffers support, which makes porting easier. DX9 doesn't have such thing. This could be implemented, but I don't think it's worth our time.
So, any opinions about this?