Преглед изворни кода

* [generator] fixed some small bugs in and generated first Vulkan.pas :)

master
Bergmann89 пре 10 година
родитељ
комит
97425e0bb2
6 измењених фајлова са 3849 додато и 147 уклоњено
  1. +137
    -0
      data/vulkan.tpl
  2. +2832
    -0
      projects/Vulkan.pas
  3. +725
    -88
      projects/generator/HeaderGenerator.pas
  4. +7
    -2
      projects/generator/generator.lpi
  5. +4
    -2
      projects/generator/generator.lpr
  6. +144
    -55
      projects/generator/generator.lps

+ 137
- 0
data/vulkan.tpl Прегледај датотеку

@@ -0,0 +1,137 @@
unit Vulkan;

{$IFDEF FPC}
{$MODE Delphi}
{$IFNDEF WINDOWS}
{$LINKLIB c}
{$ENDIF}
{$MINENUMSIZE 4}
{$ENDIF}

{$IFDEF Win32}
{$DEFINE VK_WIN}
{$ENDIF}

{$IFDEF Win64}
{$DEFINE VK_WIN}
{$ENDIF}

{$IFDEF linux}
{$DEFINE VK_LINUX}
{$DEFINE VK_CDECL}
{$ENDIF}

{$IFDEF DARWIN}
{$DEFINE VK_MAC}
{$DEFINE VK_CDECL}
{$ENDIF}

interface

{%INTERFACE%}

const
VULKAN_LIBNAME = 'vulkan-1.dll';

type
VkVersion = VkInt32;

function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion;
function vkGetVersionMajor(const aVersion: VkVersion): Integer;
function vkGetVersionMinor(const aVersion: VkVersion): Integer;
function vkgetVersionPatch(const aVersion: VkVersion): Integer;

function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
procedure FinalizeVulkan;

implementation

type
{$IF DEFINED(VK_WIN)}
TvkLibHandle = TLibHandle;
{$ELSE}
TvkLibHandle = Pointer;
{$ENDIF}

const
{$IF DEFINED(VK_WIN)}
InvalidLibHandle = 0;
{$ELSE}
InvalidLibHandle = nil;
{$ENDIF}

var
vkLibHandle: TvkLibHandle = InvalidLibHandle;

function vkLoadLibrary(const aLibName: String): TvkLibHandle;
begin
{$IF DEFINED(VK_WIN)}
result := LoadLibrary(aLibName);
{$ELSE}
result := InvalidLibHandle;
{$ENDIF}
end;

function vkGetProcAddress(const aProcName: String; aLibHandle: TvkLibHandle = InvalidLibHandle): Pointer;
begin
if (aLibHandle = InvalidLibHandle) then
aLibHandle := vkLibHandle;
{$IF DEFINED(VK_WIN)}
result := GetProcAddress(aLibHandle, AnsiString(aProcName));
{$ELSE}
result := nil;
{$ENDIF}
end;

procedure vkFreeLibrary(var aLibHandle: TvkLibHandle);
begin
if (aLibHandle <> InvalidLibHandle) then begin
{$IF DEFINED(VK_WIN)}
FreeLibrary(aLibHandle);
{$ENDIF}
aLibHandle := InvalidLibHandle;
end;
end;

function vkMakeVersion(const aMajor, aMinor, aPatch: Integer): VkVersion;
begin
result := (aMajor shl 22) or (aMinor shl 12) or aPatch;
end;

function vkGetVersionMajor(const aVersion: VkVersion): Integer;
begin
result := (aVersion shr 22);
end;

function vkGetVersionMinor(const aVersion: VkVersion): Integer;
begin
result := (aVersion shr 12) and $3FF;
end;

function vkGetVersionPatch(const aVersion: VkVersion): Integer;
begin
result := (aVersion and $FFF);
end;

function InitializeVulkan(const aLibName: String = VULKAN_LIBNAME): Boolean;
begin
FinalizeVulkan;
vkLibHandle := vkLoadLibrary(aLibName);
result := (vkLibHandle <> InvalidLibHandle);
if not result then
exit;

{%IMPLEMENTATION%}
end;

procedure FinalizeVulkan;
begin
vkFreeLibrary(vkLibHandle);
end;

initialization

finalization
FinalizeVulkan;

end.

+ 2832
- 0
projects/Vulkan.pas
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 725
- 88
projects/generator/HeaderGenerator.pas
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 7
- 2
projects/generator/generator.lpi Прегледај датотеку

@@ -29,7 +29,7 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<CommandLineParams Value="-i ..\..\data\vk.xml -t ..\..\data\vulkan.tpl"/>
<CommandLineParams Value="-i ..\..\data\vk.xml -t ..\..\data\vulkan.tpl -o ..\Vulkan.pas"/>
</local>
</RunParams>
<Units Count="2">
@@ -47,7 +47,7 @@
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="generator"/>
<Filename Value="generator-$(TargetCPU)-$(TargetOS)"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
@@ -59,6 +59,11 @@
<UseExternalDbgSyms Value="True"/>
</Debugging>
</Linking>
<Other>
<CompilerMessages>
<IgnoredMessages idx5024="True"/>
</CompilerMessages>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">


+ 4
- 2
projects/generator/generator.lpr Прегледај датотеку

@@ -66,6 +66,8 @@ begin

gen := THeaderGenerator.Create;
try
gen.OutputFile := OutputFile;
gen.TemplateFile := TemplateFile;
gen.ReadFile(InputFile);
finally
FreeAndNil(gen);
@@ -75,8 +77,8 @@ end;
begin
try
InputFile := ExtractFilePath(ParamStr(0)) + 'vk.xml';
OutputFile := ExtractFilePath(ParamStr(0)) + 'vulkan.pas';
TemplateFile := ExtractFilePath(ParamStr(0)) + 'vulkan.tpl';
OutputFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.pas';
TemplateFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.tpl';
ParseArgs;
GenerateHeader;
except


+ 144
- 55
projects/generator/generator.lps Прегледај датотеку

@@ -4,13 +4,12 @@
<PathDelim Value="\"/>
<Version Value="9"/>
<BuildModes Active="Default"/>
<Units Count="7">
<Units Count="19">
<Unit0>
<Filename Value="generator.lpr"/>
<IsPartOfProject Value="True"/>
<TopLine Value="60"/>
<CursorPos Y="91"/>
<UsageCount Value="30"/>
<CursorPos X="47" Y="16"/>
<UsageCount Value="48"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@@ -18,9 +17,9 @@
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<TopLine Value="450"/>
<CursorPos X="62" Y="461"/>
<UsageCount Value="30"/>
<TopLine Value="695"/>
<CursorPos X="32" Y="705"/>
<UsageCount Value="48"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@@ -28,170 +27,260 @@
<EditorIndex Value="-1"/>
<TopLine Value="5"/>
<CursorPos X="21" Y="27"/>
<UsageCount Value="30"/>
<UsageCount Value="28"/>
</Unit2>
<Unit3>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<EditorIndex Value="4"/>
<EditorIndex Value="-1"/>
<TopLine Value="102"/>
<CursorPos X="3" Y="118"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
<UsageCount Value="14"/>
</Unit3>
<Unit4>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\packages\fcl-xml\src\xmlutils.pp"/>
<EditorIndex Value="5"/>
<EditorIndex Value="-1"/>
<TopLine Value="12"/>
<CursorPos X="3" Y="28"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
<UsageCount Value="14"/>
</Unit4>
<Unit5>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\objpas\sysutils\sysutilh.inc"/>
<EditorIndex Value="3"/>
<EditorIndex Value="-1"/>
<TopLine Value="96"/>
<CursorPos X="19" Y="112"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
<UsageCount Value="13"/>
</Unit5>
<Unit6>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\objpas\sysutils\sysstrh.inc"/>
<EditorIndex Value="2"/>
<EditorIndex Value="-1"/>
<TopLine Value="82"/>
<CursorPos X="10" Y="97"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
<UsageCount Value="13"/>
</Unit6>
<Unit7>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\inc\systemh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="96"/>
<CursorPos X="16" Y="111"/>
<UsageCount Value="10"/>
</Unit7>
<Unit8>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\win\sysosh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="6"/>
<CursorPos X="3" Y="22"/>
<UsageCount Value="10"/>
</Unit8>
<Unit9>
<Filename Value="Vulkan.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="2438"/>
<CursorPos X="19" Y="2443"/>
<UsageCount Value="13"/>
</Unit9>
<Unit10>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\objpas\objpas.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="20"/>
<CursorPos X="23" Y="35"/>
<UsageCount Value="10"/>
</Unit10>
<Unit11>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\objpas\fgl.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="168"/>
<CursorPos X="11" Y="187"/>
<UsageCount Value="13"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\libTextSuite\OpenGlCore\dglOpenGL.pas"/>
<WindowIndex Value="1"/>
<TopLine Value="15048"/>
<CursorPos X="11" Y="14967"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\data\Vulkan.tpl"/>
<EditorIndex Value="2"/>
<CursorPos X="40" Y="11"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit13>
<Unit14>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\inc\dynlibh.inc"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
<WindowIndex Value="1"/>
<TopLine Value="35"/>
<CursorPos X="25" Y="55"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="C:\Zusatzprogramme\Lazarus\fpc\3.1.1\source\rtl\win\sysdlh.inc"/>
<EditorIndex Value="-1"/>
<CursorPos X="3" Y="17"/>
<UsageCount Value="10"/>
</Unit15>
<Unit16>
<Filename Value="..\Vulkan.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="27"/>
<UsageCount Value="11"/>
</Unit16>
<Unit17>
<Filename Value="..\Vulkan_new.pas"/>
<UnitName Value="Vulkan"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="1"/>
<TopLine Value="350"/>
<UsageCount Value="10"/>
</Unit17>
<Unit18>
<Filename Value="..\Vulkan_old.pas"/>
<UnitName Value="vulkan"/>
<EditorIndex Value="-1"/>
<WindowIndex Value="1"/>
<CursorPos X="41" Y="8"/>
<UsageCount Value="10"/>
</Unit18>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="25" Column="47" TopLine="12"/>
<Caret Line="1025" TopLine="1010"/>
</Position1>
<Position2>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="191" Column="11" TopLine="165"/>
<Caret Line="866" TopLine="852"/>
</Position2>
<Position3>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="353" Column="45" TopLine="327"/>
<Caret Line="867" TopLine="852"/>
</Position3>
<Position4>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="359" Column="40" TopLine="340"/>
<Caret Line="268" TopLine="251"/>
</Position4>
<Position5>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="393" Column="43" TopLine="365"/>
<Caret Line="1013" Column="4" TopLine="996"/>
</Position5>
<Position6>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="542" Column="43" TopLine="516"/>
<Caret Line="1025" TopLine="1000"/>
</Position6>
<Position7>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="739" Column="67" TopLine="714"/>
<Caret Line="1026" TopLine="1002"/>
</Position7>
<Position8>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="16" Column="13"/>
<Caret Line="269" TopLine="253"/>
</Position8>
<Position9>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="27" Column="20" TopLine="6"/>
<Caret Line="270" TopLine="253"/>
</Position9>
<Position10>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="155" TopLine="144"/>
<Caret Line="271" TopLine="253"/>
</Position10>
<Position11>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="749" TopLine="740"/>
<Caret Line="272" TopLine="253"/>
</Position11>
<Position12>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="582" Column="35" TopLine="561"/>
<Caret Line="273" TopLine="253"/>
</Position12>
<Position13>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="595" Column="23" TopLine="574"/>
<Caret Line="275" TopLine="253"/>
</Position13>
<Position14>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="136" TopLine="114"/>
<Caret Line="764" Column="94" TopLine="776"/>
</Position14>
<Position15>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="339" Column="33" TopLine="364"/>
<Caret Line="1025" TopLine="1010"/>
</Position15>
<Position16>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="187" Column="14" TopLine="209"/>
<Caret Line="1026" TopLine="1010"/>
</Position16>
<Position17>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="740" Column="25" TopLine="758"/>
<Caret Line="268" TopLine="252"/>
</Position17>
<Position18>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="764" Column="22" TopLine="758"/>
<Caret Line="269" TopLine="252"/>
</Position18>
<Position19>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="289" Column="3" TopLine="284"/>
<Caret Line="270" TopLine="252"/>
</Position19>
<Position20>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="322" Column="4" TopLine="305"/>
<Caret Line="271" TopLine="252"/>
</Position20>
<Position21>
<Filename Value="generator.lpr"/>
<Caret Line="10" Column="3" TopLine="48"/>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="273" TopLine="252"/>
</Position21>
<Position22>
<Filename Value="generator.lpr"/>
<Caret Line="9" Column="13"/>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="275" TopLine="252"/>
</Position22>
<Position23>
<Filename Value="generator.lpr"/>
<Caret Line="68" TopLine="52"/>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="1022" Column="21" TopLine="998"/>
</Position23>
<Position24>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="825" Column="20" TopLine="811"/>
</Position24>
<Position25>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="687" Column="32" TopLine="673"/>
<Caret Line="7" Column="29"/>
</Position25>
<Position26>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="274" TopLine="266"/>
<Caret Line="71" Column="27" TopLine="46"/>
</Position26>
<Position27>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="292" TopLine="266"/>
<Caret Line="952" Column="23" TopLine="937"/>
</Position27>
<Position28>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="400" TopLine="384"/>
<Caret Line="106" Column="7" TopLine="85"/>
</Position28>
<Position29>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="305" TopLine="289"/>
<Caret Line="636" TopLine="626"/>
</Position29>
<Position30>
<Filename Value="HeaderGenerator.pas"/>
<Caret Line="397" Column="25" TopLine="384"/>
<Caret Line="97" Column="35" TopLine="92"/>
</Position30>
</JumpHistory>
</ProjectSession>
<Debugging>
<Watches Count="1">
<Watches Count="3">
<Item1>
<Expression Value="result.fName"/>
<Expression Value="fName"/>
</Item1>
<Item2>
<Expression Value="result.fName"/>
</Item2>
<Item3>
<Expression Value="result.fReturnValue.IsPointer"/>
</Item3>
</Watches>
</Debugging>
</CONFIG>

Loading…
Откажи
Сачувај