2009/8/6 Stefan Dösinger stefan@codeweavers.com:
Am Thursday 06 August 2009 09:35:12 schrieb Henri Verbeet:
Aside from the fact that you can't know WineDirect3DCreate() failed because of a lack of OpenGL without looking at its implementation, I liked the create flags approach better.
Well, the WINED3DOK_NO3D is intended to say "you got your d3d object, but it will only do 2D drawing for you", and then its up to the client to accept this or not(Although I just see I forgot to release the returned object in this case). I don't see the problem.
The problem is that wined3d without 3D capabilities really doesn't make a whole lot of sense for anything except ddraw with the gdi renderer. Arguably that code path shouldn't even depend on wined3d. A wined3d object without 3D capabilities is the exception, and should be handled as such.
I dislike create flags as much as dxVersion checks, and we should handle as much as possible without them. I feel strongly against using a create flag in patch 4. I just think passing in a flag to call X and call Y's behavior will miraculously change is ugly, although sometimes we can't avoid it.
If done properly, miracles have nothing to do with it... The problem with patch 4 is that you really want the initial value to change, but instead you change it afterwards, and hope you caught all the cases. Fortunately the tests should help a bit there, but I don't think it's a good principle if you can easily avoid it.
Another advantage of the flags is that you have a reasonably centralised overview of differences between the different wined3d client libraries.