Lazarus

Free Pascal => Windows => Topic started by: Key-Real on April 29, 2021, 06:34:12 pm

Title: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 29, 2021, 06:34:12 pm
Hi,
I have DirectDraw Headers from JEDI.
They work with 32bit compilation, but not with 64bit(It compiles but if run: CreateSurface fails).

I have setup a test:
http://www.sistavip.com/pub/ddrawtest.zip

Please Help
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 29, 2021, 07:50:58 pm
If I use original Delphi Headers it works on Delphi 32&64bit.
But on FPC only 32bit, not 64bit(Same Problem as by JEDI Headers)

my Test:
http://www.sistavip.com/pub/ddraw_delphiOK.zip
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: engkin on April 29, 2021, 08:06:23 pm
Quick test shows that your SizeOf( TDDSURFACEDESC ) is wrong. It should be 120 bytes on Win64 that is based on the one in unit p_ddraw (included with FPC).

I noticed your have:
Code: Pascal  [Select][+][-]
  1. {$MINENUMSIZE 4}
  2. {$ALIGN ON}
in your DDraw unit.

Replacing it with:
Code: Pascal  [Select][+][-]
  1. {$PACKRECORDS c}
  2.  

AND removing "packed" from two records:
Code: Pascal  [Select][+][-]
  1. ...
  2. {$PACKRECORDS c}
  3. {engkin}{ $MINENUMSIZE 4}
  4. {engkin}{ $ALIGN ON}
  5.  
  6. ...
  7.   _DDCOLORKEY = {engkin}{packed} record
  8. ...
  9.   _DDSURFACEDESC = {engkin}{packed} record
  10. ...
  11.  

fixes the problem.

Prabably you need to remove it from all the records.

Edit:
Attached DDraw unit.
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 29, 2021, 08:27:06 pm
Thx to engkin :)

The JEDI ddraw works now for fpc 32 & 64 bit.
But under Delphi only 32bit.

Do I need other changes to make it works for Delphi 64?
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: engkin on April 29, 2021, 08:43:36 pm
I don't have Delphi, so I can only suggest to use the usual $ifdef way.
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 29, 2021, 09:14:36 pm
Perhaps you can Check the second Test, IT works for Delphi 32&64 but only for fpc33
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 29, 2021, 10:48:44 pm
Perhaps ist easyer to go from the Delphi Implementation to fpc.
Check the second Test.
Thx, engkin
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: engkin on April 29, 2021, 11:35:21 pm
I think this should work. Give it a try. It is based on the Delphi project you shared above.

I noticed the project itself has issues, but not related to this.
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: Key-Real on April 30, 2021, 05:39:24 pm
engkin,
thx it works now under fpc and dephi 32&64bit.

what issues you found in the tests?
Title: Re: Direct Draw from JEDI does not work under 64bit
Post by: engkin on April 30, 2021, 09:06:20 pm
Compared to the previous test, it did not close as the relevant message was commented out, and the caption of the form was random characters.
TinyPortal © 2005-2018