Pb WineD3D: power of 2 surface and non power of 2 DIB section

Christian Costa titan.costa at wanadoo.fr
Tue Jul 11 16:56:42 CDT 2006


Stefan Dösinger a écrit :
> Am Montag 10 Juli 2006 22:10 schrieb Christian Costa:
>   
>> Hi,
>>
>> When calling CreateSurface, a power of 2 surface is created and then the
>> necessary memory is allocated.
>> If we try to get the DC with GetDC, a DIB section is created with the
>> original size of the surface and data from the surface
>> is copied to the DIB section The power of 2 surface being greater than
>> the DIB section, this makes Wine crashes.
>>     
> I got nonpower of 2 dib sections working for some games here, and as far as I 
> remember I create the dib section with the full pow2 size.
>
>   
The problem is that a render target surface is created,  CreateSurface 
always computes the size using power of 2 width and height.
But in GetDC the original size is used in the case of the render target. 
This mismatch is the source of the problem.
I guess we should compute the size in CreateSurface using the original 
size in the case of the render target.
If this is the right fix, I will send a patch.

Christian




More information about the wine-devel mailing list