Skip to content
@vkngwrapper

vkngwrapper

Vulkan n' Go

vkngwrapper

Vkngwrapper (proununced "Viking Wrapper") is a handwritten cgo wrapper for the Vulkan graphics and compute API. The goal is to produce fast, easy-to-use, low-go-allocation, and idiomatic Go code to communicate with your graphics card and enable games and other graphical applications. Vkngwrapper currently supports core versions 1.0-1.2 via the https://github.com/vkngwrapper/core repository, as well as many extensions via the https://github.com/vkngwrapper/extensions repository.

Under the hood, Vkngwrapper uses https://github.com/cannibalvox/cgoparam to avoid calling C.Malloc and C.Free while still avoiding the cost of a deep cgocheck on Go memory. This allows you to save precious nanoseconds (or sometimes microseconds!) on your cgo overhead.

Vkngwrapper is also heavily-tested. The marshalling and unmarshalling layer has high test coverage, giving the core library 84.5% test coverage and the extensions library 87.9% test coverage. While this coverage is not perfect, Vulkan has an extremely large API surface, and these tests ensure that there is no obviously-busted functionality. Additionally, the entire API is mockable (and pre-generated gomocks are provided), allowing you to test your own code with ease.

Lastly, vkngwrapper has a solid and still-growing base of examples, built from Go ports of existing Vulkan examples. Several key samples from https://github.com/LunarG/VulkanSamples have are included in our example repository, as well as a full port of the Vulkan tutorial, which can be followed step by step at https://github.com/vkngwrapper/vulkan-tutorial

For more information about how to use vkngwrapper, check out the core repository!

Roadmap

  • Vulkan Wrapper core 1.0-1.2
  • Fast, zero allocation 3d math library with SIMD support (Why not SIMD?)
  • Pure go port of VMA
  • Pure go port of Quake 2
  • Vulkan Wrapper core 1.3
  • NEON/SVE support in 3d math library (Why not SIMD?)
  • Fyne and/or GioUI Integration
  • Port many Vulkan Samples, using Fyne or GioUI in place of DearImgui

Pinned Loading

  1. core core Public

    vkng wrapper - vulkan core 1.0-1.2

    Go 30 2

  2. examples examples Public

    vkng wrapper - usage examples

    Go 3

Repositories

Showing 8 of 8 repositories
  • arsenal Public

    vital utilities for vkngwrapper. right now just a VulkanMemoryAllocator port

    vkngwrapper/arsenal’s past year of commit activity
    Go 3 MIT 1 0 0 Updated Sep 21, 2024
  • vulkan-tutorial Public

    Golang version of https://vulkan-tutorial.com

    vkngwrapper/vulkan-tutorial’s past year of commit activity
    Go 16 MIT 2 0 0 Updated Apr 27, 2023
  • examples Public

    vkng wrapper - usage examples

    vkngwrapper/examples’s past year of commit activity
    Go 3 MIT 0 0 0 Updated Apr 27, 2023
  • integrations Public

    utilities to integrate vkng with other go libraries

    vkngwrapper/integrations’s past year of commit activity
    C 0 MIT 0 0 0 Updated Apr 27, 2023
  • extensions Public

    vkng wrapper - vulkan extensions

    vkngwrapper/extensions’s past year of commit activity
    Go 2 MIT 0 0 0 Updated Apr 27, 2023
  • core Public

    vkng wrapper - vulkan core 1.0-1.2

    vkngwrapper/core’s past year of commit activity
    Go 30 MIT 2 1 0 Updated Apr 26, 2023
  • math Public

    32-bit and 64-bit floating point math. low/no allocations.

    vkngwrapper/math’s past year of commit activity
    Go 11 MIT 2 0 0 Updated Dec 22, 2022
  • .github Public
    vkngwrapper/.github’s past year of commit activity
    0 0 0 0 Updated Dec 22, 2022

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…