Skip to content

Latest commit

 

History

History

Declarative

Declarative

Experimental declarative UI that use the new data-binding capability to create UI from a XML file.

PROTOTYPE WARNING: This is a experimental prototype to showcase what is possible.

Lots of things are incomplete!

Interactive playground

The main way to play around with this interactively by taking advantage of the --ContentMonitor and --AppFirewall capabilities.

  1. Build the app, go to the executable directory

  2. start the app.

    Vulkan.UI.Declarative --Window [0,0,1280,720] --ContentMonitor --AppFirewall

    Adapt the window to fit your screen, or skip the --Window parameter to run fullscreen.

  3. Open the file at EXE-FOLDER/Content/DeclarativeUI.xml with a XSD aware xml editor like visual studio. If you are using Visual Studio code you can install the redhat XML extension

  4. Edit the xml and then save it to force the app to refresh.

WARNING: be sure to edit the .xml file in the content folder at the build exe location and not the one you checked out (since the exe is monitoring it own build Content folder).

Compile time playground

  1. Edit the checked out Content/DeclarativeUI.xml
  2. Build and run the app.

Command line arguments:

Command line arguments':

Argument Description Source
--SaveXsd <arg> Save the current UI XSD file Demo
--ActualDpi <arg> ActualDpi [x,y] Override the actual dpi reported by the native window DemoHost
--DensityDpi <arg> DensityDpi <number> Override the density dpi reported by the native window DemoHost
--DisplayId <arg> DisplayId <number> DemoHost
--LogExtensions Output the extensions to the log DemoHost
--LogLayers Output the layers to the log DemoHost
--LogSurfaceFormats Output the supported surface formats to the log DemoHost
--VkApiDump Enable the VK_LAYER_LUNARG_api_dump layer. DemoHost
--VkPhysicalDevice <arg> Set the physical device index. DemoHost
--VkPresentMode <arg> Override the present mode with the supplied value. Known values: VK_PRESENT_MODE_IMMEDIATE_KHR (0), VK_PRESENT_MODE_MAILBOX_KHR (1), VK_PRESENT_MODE_FIFO_KHR (2), VK_PRESENT_MODE_FIFO_RELAXED_KHR (3), VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR (1000111000), VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR (1000111001) DemoHost
--VkScreenshot <arg> Enable/disable screenshot support (defaults to enabled) DemoHost
--VkValidate <arg> Enable/disable the VK_LAYER_LUNARG_standard_validation layer. DemoHost
--Window <arg> Window mode [left,top,width,height] DemoHost
--AppFirewall Enable the app firewall, reporting crashes on-screen instead of exiting DemoHostManager
--ContentMonitor Monitor the Content directory for changes and restart the app on changes.WARNING: Might not work on all platforms and it might impact app performance (experimental) DemoHostManager
--ExitAfterDuration <arg> Exit after the given duration has passed. The value can be specified in seconds or milliseconds. For example 10s or 10ms. DemoHostManager
--ExitAfterFrame <arg> Exit after the given number of frames has been rendered DemoHostManager
--ForceUpdateTime <arg> Force the update time to be the given value in microseconds (can be useful when taking a lot of screen-shots). If 0 this option is disabled DemoHostManager
--LogStats Log basic rendering stats (this is equal to setting LogStatsMode to latest) DemoHostManager
--LogStatsMode <arg> Set the log stats mode, more advanced version of LogStats. Can be disabled, latest, average DemoHostManager
--ScreenshotFormat <arg> Chose the format for the screenshot: bmp, jpg, png (default), tga DemoHostManager
--ScreenshotFrequency <arg> Create a screenshot at the given frame frequency DemoHostManager
--ScreenshotNamePrefix <arg> Chose the screenshot name prefix (defaults to 'Screenshot') DemoHostManager
--ScreenshotNameScheme <arg> Chose the screenshot name scheme: frame (default), sequence, exact. DemoHostManager
--Stats Display basic frame profiling stats DemoHostManager
--StatsFlags <arg> Select the stats to be displayed/logged. Defaults to frame|cpu. Can be 'frame', 'cpu' or any combination DemoHostManager
--Version Print version information DemoHostManager
--Graphics.Profile Enable graphics service stats GraphicsService
--Profiler.AverageEntries <arg> The number of frames used to calculate the average frame-time. Defaults to: 60 ProfilerService
--ghelp <arg> Display option groups: all, demo or host base
-h, --help Display options base
-v, --verbose Enable verbose output base