Class VulkanRenderModuleEntrypoint

java.lang.Object
io.codetoil.curved_spacetime.render.vulkan.VulkanRenderModuleEntrypoint
All Implemented Interfaces:
ModuleInitializer

public class VulkanRenderModuleEntrypoint extends Object implements ModuleInitializer
The Vulkan render module's main entrypoint.

Joins the two halves of Vulkan rendering: the render module's window and input abstractions, and the Vulkan module's devices and queues. It depends on both, so it blocks during initialization until each has been handed to it, then hands itself to the windowing-specific module that actually draws.

  • Constructor Details

    • VulkanRenderModuleEntrypoint

      public VulkanRenderModuleEntrypoint()
      Creates the Vulkan render module's entrypoint.

      Called by the loader; nothing happens until onInitialize() runs.

  • Method Details

    • onInitialize

      public void onInitialize()
      Description copied from interface: ModuleInitializer
      Brings this module up.

      An implementation sets its logger's level from the engine's configuration, loads its own configuration and saves it if loading substituted defaults, receives any dependencies it declares through ModuleInitializer.getDependencyModuleTransferQueue(), performs any operations it must perform during initialization, and finally invokes its own dependent entrypoints, passing itself.

      Specified by:
      onInitialize in interface ModuleInitializer
    • recieveDependenciesFromTransferQueue

      protected void recieveDependenciesFromTransferQueue() throws InterruptedException
      Blocks until both dependencies have been handed to this module.

      Takes exactly two elements and sorts them by type, since the Vulkan and render modules initialise concurrently and either may arrive first.

      Throws:
      InterruptedException - if interrupted while waiting for a dependency
    • getConfig

      public ModuleConfig getConfig()
      Description copied from interface: ModuleInitializer
      Returns this module's configuration.
      Specified by:
      getConfig in interface ModuleInitializer
      Returns:
      the configuration, or null before ModuleInitializer.onInitialize() has loaded it
    • getLogger

      public Logger getLogger()
      Description copied from interface: ModuleInitializer
      Returns the logger this module writes its diagnostics to.

      The same instance is returned for the lifetime of this entrypoint.

      Specified by:
      getLogger in interface ModuleInitializer
      Returns:
      this module's logger
    • getDependencyModuleTransferQueue

      public TransferQueue<ModuleInitializer> getDependencyModuleTransferQueue()
      Description copied from interface: ModuleInitializer
      Returns the queue by which this module receives the entrypoints it depends on.

      A module does not look its dependencies up. Each module it depends on invokes a dependent entrypoint, which transfers that module's own entrypoint into this queue. The same instance is returned for the lifetime of this entrypoint; a fresh or defensively copied queue breaks the handshake, because the producer transfers into whichever queue this method returned.

      Specified by:
      getDependencyModuleTransferQueue in interface ModuleInitializer
      Returns:
      this module's dependency transfer queue