[PATCH 07/10] ddraw: Allow creating back buffer for DirectX 1 interfaces. (try 3)

Oldřich Jedlička oldium.pro at seznam.cz
Wed Aug 4 16:14:30 CDT 2010


On Wednesday 04 August 2010 10:10:17 Stefan Dösinger wrote:
> Am 03.08.2010
um 21:26 schrieb Oldřich Jedlička:
> > DirectX 1 interface allowed creation
of explicit back buffers, so move
> > the restrictive checks to DirectX 2+
implementations. Don't permit
> > creating of primary surface back buffer.
>

> The patch(as well as 9 and 10) look OK to me. Patch 6 is OK too.
> 
>
Patch 8 is missing a call to wined3d to tell it about the new backbuffer.
>
(Apps will likely still work with the GDI renderer, but not the opengl
>
ddraw renderer)

That is not so easy as it looks. I've tried to play with
that, but there are some difficulties and I don't have time to investigate
them deeper:

1. To be able to call IWineD3DDevice_SetFrontBackBuffers, the
backbuffer has to be created with Usage |= WINED3DUSAGE_RENDERTARGET
(ddraw.c, method ddraw_create_surface). No problem here (if I ignore the
fact that I don't know what the rendertarget really means).

2. The
IWineD3DDevice_SetFrontBackBuffers call in surface.c, method
ddraw_surface_attach_surface, has to use the right ordering of arguments.
Afterwards I had problems with freeing some surface (page fault).

3. The
method GetAttachedSurface needs fixing for flipping too - it doesn't return
the right surface sometimes. When I modified the method, I got other
failures/crashes with d3d tests.

From my point of view it would be better
to have the flipping for backbuffers unsupported for now - until somebody
with more understanding of internals has a better look. I'm not the right
person now. The flipping tests are the right ones to start.

The changes
from the patch doesn't add the full support, but it doesn't add more
failures and it doesn't crash (which is much better than results from my
playing this evening).

Thanks.

Oldřich.



More information about the wine-devel mailing list