On 9 October 2011 17:31, Stefan Dösinger stefan@codeweavers.com wrote:
- I can't say I find e.g. sprinkling d3dformat_is_palettized() over the code particularly elegant.
I suppose I could check for it in IDirect3DDevice8Impl_CreateSurface(and the d3d9 equivalent), if all calls that create surfaces run through it.
- Do you have tests for the D3DERR_INVALIDCALL returns?
I tested that and Windows returns D3D_OK. Windows also allows creating P8 offscreen plain surfaces, and it allows StretchRect operations between those surfaces. It doesn't allow StretchRect operations between P8 and non- Palettized surfaces. In the end I could not find any way to make use of those surfaces I could create.
I prefer to return INVALIDCALL over the half-baked implementation Windows has to find applications that try to use P8 surfaces in a way I may have missed.
It's not really clear to me that refusing to create P8 surfaces in d3d8/9 really gains us much, or that it's really a prerequisite for the other patches. If you want to go that way though, you should probably just map D3DFORMAT_P8 to something that's not WINED3DFMT_P8_UINT, perhaps WINED3DFMT_UNSUPPORTED, and just let wined3d fail resource creation.