DGL
https://delphigl.com/forum/

Vulkan.pas
https://delphigl.com/forum/viewtopic.php?f=14&t=11484
Seite 1 von 3

Autor:  Bergmann89 [ Mo Feb 22, 2016 18:44 ]
Betreff des Beitrags:  Vulkan.pas

Meinungs-Thread zum Projekt Vulkan.pas

Autor:  Sascha Willems [ Mo Feb 22, 2016 19:59 ]
Betreff des Beitrags:  Re: Vulkan.pas

Hier : https://github.com/MaksymTymkovych/Delphi-Vulkan
arbeitet auch schon jemand an einem (Delphi) Header für Vulkan. Aber soweit ich das erkennen kann ohne Generator.

Autor:  Bergmann89 [ Mo Feb 22, 2016 20:03 ]
Betreff des Beitrags:  Re: Vulkan.pas

Jap, bei dem hab ich auch schon abgeguckt und nen Bug bei mir gefixt :mrgreen:

Autor:  Ida [ Mo Feb 22, 2016 22:43 ]
Betreff des Beitrags:  Re: Vulkan.pas

Eine Vulkan-Instanz lässt sich damit schon mal nach ein paar Abänderungen fehlerlos mit FPC erstellen das ist schon mal ein guter Start.

Autor:  bero [ Di Feb 23, 2016 03:25 ]
Betreff des Beitrags:  Re: Vulkan.pas

Hier: https://github.com/BeRo1985/pasvulkan Das ist generator-basiert und soweit komplett, wobei ich da noch am Loading-Part arbeite.

Autor:  Bergmann89 [ Di Feb 23, 2016 09:20 ]
Betreff des Beitrags:  Re: Vulkan.pas

Hey,

warum hast du dir deinen eigenen XML-Interpreter geschrieben? Gibts da in Delphi nichts fertiges? :shock:
Für die ganzen Loading-Methoden hab ich mir ein Template geschrieben, welches dann nur noch mit den Daten aus der vk.xml gefüllt wird. Das ist - finde ich - unkomplizierter und macht den Code nicht so unübersichtlich: http://git.ccs-baumann.de/bitspace/Vulk ... vulkan.tpl

MfG Bergmann.

Autor:  bero [ Di Feb 23, 2016 10:14 ]
Betreff des Beitrags:  Re: Vulkan.pas

Zum einen heißt es XML-Parser und nicht XML-Interpreter :) und zum anderen soll es auch mit FreePascal, älteren Delphi Versionen (ab D7) und sowie mit meinem eigenen ObjectPascal Compiler namens CrossPascal kompilierbar sein, und zudem soll für meinen Geschmack die vkxml2pas.dpr eigenständig ohne externe Single-Compiler-Ecosystem-Only-Abhängigkeiten (z.B. fpxml) herkommen und sowie cross-plattform sein, und zudem habe ich über die Jahre hinweg (also ungefähr seit ca. 1993/1994, obwohl ich erst Baujahr 1985 bin) schon nahezu alles mögliche selbst implementiert, darunter halt auch mehrere XML-Parser, so dass ich für meinen vkxml2pas Translator quasi nur noch irgendeinen alten XML-Parser von mir heraussuchen musste und dann nur noch ein copy&paste machen musste.

Ich hoffe, dass ich damit deine "warum" Frage zufriedenstellend beantworten konnte :)

Autor:  TAK2004 [ Di Feb 23, 2016 12:38 ]
Betreff des Beitrags:  Re: Vulkan.pas

Hehe, der Krieg um DEN Vulkan Header für Object Pascal ist entbrannt :D
Ihr seit alle ja richtig fleißig, bin mal gespannt, wann ich die erste Demo sehen kann.

Bei bero bin ich eher gespannt, wie klein er das executable quetscht.

Selten dominiert der den besten Header schreibt sondern der mit der einfachsten integration in ein einfaches Beispiel.
Glew ist z.B. ziemlich verbreitet bei OpenGL aber es gibt viele Header die viel sauberer, linkerfreundlicher und Bugfrei sind und völlig unter dem Radar laufen.
Diese sind auch umständlicher zu nutzen und in der Regel kann man nicht alles in einem Header vereinen.

Autor:  bero [ Di Feb 23, 2016 19:29 ]
Betreff des Beitrags:  Re: Vulkan.pas

Mein vkxml2pas-generierter Vulkan Header wird halt dann für alle Vulkan-supported Targets sein, inkl. Android, wo u.A. die Spec folgendes sagt:

Zitat:
On Android/ARMv7a, Vulkan functions use the armeabi-v7a-hard calling convention, even if the application's native code is compiled with the armeabi-v7a calling convention.


Da aber weder der Delphi NextGen Mobile Compiler noch FreePascal momentan verschiedene ARM Calling Conventions gleichzeitig in einer einzelnen Unit unterstützen (im Gegensatz z.B. zum x86-32 Target), erarbeite ich momentan eine Lösung für meinen vkxml2pas-generierten Vulkan Header mithilfe etwas Calling-Convention-Proxy Inline Assembler Magie, wo diese Lösung für Android/ARMv7a dann nur für FreePascal gelten wird, da der Delphi NextGen Mobile Compiler, glaube ich zumindest, keine Inline Assembler Codeparts zulässt (zumindest steht in den Delphi Docs "The Delphi mobile compilers do not support a built-in assembler.").

Autor:  TAK2004 [ Di Feb 23, 2016 20:16 ]
Betreff des Beitrags:  Re: Vulkan.pas

Ich baue ja aktuell ein cluster aus allwinner h3 und noch h8, die h8 haben eing vulkan fähige gpu mit treibern. Wenn ich das h8 devboard habe würde ich auch mal gerne vulkan probieren. Auf pc reizt mich das wenig.

Autor:  bero [ Mi Feb 24, 2016 00:52 ]
Betreff des Beitrags:  Re: Vulkan.pas

So mein vkxml2pas-generierter Header hat nun folgendes Ladeinterface:

Code:
  1.  
  2. function LoadVulkanLibrary(const LibraryName:string=VK_DEFAULT_LIB_NAME):boolean;
  3. function LoadVulkanGlobalCommands:boolean;
  4. function LoadVulkanInstanceCommands(const GetInstanceProcAddr:TvkGetInstanceProcAddr;const Instance:TVkInstance;out InstanceCommands:TVulkanCommands):boolean;
  5. function LoadVulkanDeviceCommands(const GetDeviceProcAddr:TvkGetDeviceProcAddr;const Device:TVkDevice;out DeviceCommands:TVulkanCommands):boolean;
  6.  


wo LoadVulkanLibrary nur vkGetInstanceProcAddr lädt, und LoadVulkanGlobalCommands lädt dann den Rest mithilfe vkGetInstanceProcAddr(nil,*) (wie die Vulkan Spec irgendwo es empfiehlt), und LoadVulkanInstanceCommands und LoadVulkanDeviceCommands sollen klar sein, wofür die da sind, wenn man die Vulkan Spec gelesen hat.

Nun muss ich mir ein Vulkan-taugliches Android-Gerät zu legen, sprich am besten das NVidia Shield TV (wofür bereits ein Vulkan-taugliches Stock AndroidTV ROM gibt), damit ich den generierten Header dann direkt auch Android/armv7a tauglich machen kann und auch es direkt testen kann.

Zudem gibt es nun auch eine TVulkan Klasse, worüber zukünftig auch dann das fürs Android/armv7a Target erforderliche Calling-Convention-Proxy ablaufen wird. Und es gibt zudem auch nun eine default-globale TVulkan Instanz namens vk, so dass man statt z.B. vkCreateInstance auch vk.CreateInstance verwenden kann (mit automatischem Calling-Convention-Proxing-Krams dann).

Autor:  Sascha Willems [ Mi Feb 24, 2016 07:57 ]
Betreff des Beitrags:  Re: Vulkan.pas

bero hat geschrieben:
Nun muss ich mir ein Vulkan-taugliches Android-Gerät zu legen, sprich am besten das NVidia Shield TV (wofür bereits ein Vulkan-taugliches Stock AndroidTV ROM gibt), damit ich den generierten Header dann direkt auch Android/armv7a tauglich machen kann und auch es direkt testen kann.


Für Vulkan ist das Shield TV perfekt, hab damit ja auch entwickelt. Alternativ (und etwas günstiger) wäre der Nexus Player, da gibts von Imagination auch ein (x86) Image mit Vulkansupport.

Wenn es um mehr als nur den Header geht sollte man aber eh auf mehreren IHVs testen, grade NVIDIA (egal ob Desktop oder Shield, ist ja beides teilweise die gleiche Architektur) nehmen das mit den Image Barrieren nicht so wichtig, während man auf AMD stark drauf achten muss.

Autor:  Ida [ Mi Feb 24, 2016 08:33 ]
Betreff des Beitrags:  Re: Vulkan.pas

Für alle die schon eine Vulkan.pas haben und Starthilfe brauchen, Ich hab ein super Tutorial entdeckt:
https://gist.github.com/graphitemaster/ ... 379af840d4

Und für alle die wie Ich unterwegs an Vulkan rumprobieren wollen und einen Laptop mit IntelHD-GPU haben, es hieß zwar Intel hat auch zum Release Vulkan-Treiber veröffentlicht, aber wie sich eben herrausstellte nur für LINUX
Bild

Autor:  Sascha Willems [ Mi Feb 24, 2016 08:55 ]
Betreff des Beitrags:  Re: Vulkan.pas

Auch ein guter Startpunkt : Vulkan in 30 Minutes

Autor:  Sascha Willems [ Sa Feb 27, 2016 17:36 ]
Betreff des Beitrags:  Re: Vulkan.pas

Wie sieht es eigentlich mit dem Rest der Tools aus? Werdet ihr auch die SPIR-V Tools übersetzen?

Seite 1 von 3 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/