Skip to content

IAGHI

IA Graphics Hardware Interface — a modern, lightweight C++23 graphics abstraction over Vulkan.

IAGHI reduces Vulkan boilerplate while keeping explicit control: opaque handles, dynamic rendering, simplified resource states, and Auxid Result<T> error handling.

Requirements

  • C++23 compiler (MSVC, Clang, or GCC)
  • Vulkan SDK and development libraries
  • CMake 3.28+
  • LibAuxid (submodule) for import auxid
  • Documentation build: Doxygen 1.9.8+ (1.11+ recommended for modules), Python 3 with packages in docs/requirements.txt

Using the library

Link against the CMake target IAGHI and import modules (no public headers):

import iaghi;
import iaghi.utils; // optional: GLSL compile, staging, default textures
ghi::InitInfo init_info = {};
init_info.app_name = "My App";
init_info.validation_enabled = true;
init_info.surface_width = 1920;
init_info.surface_height = 1080;

auto device = ghi::create_device(init_info).value();
ghi::CommandBuffer cmd = ghi::begin_frame(device);
// ... record commands ...
ghi::end_frame(device);

Features

  • Batch create/destroy for buffers, images, and samplers
  • Simplified synchronization via EResourceState
  • Dynamic descriptor tables and binding layouts
  • SPIR-V shaders, off-screen rendering, render-to-texture
  • Automatic GPU selection (discrete → integrated → virtual)
  • Optional iaghi.utils for GLSL→SPIR-V, image loading, and defaults

Examples

Example Path Topic
Hello Triangle examples/hello-triangle Device init, basic drawing
Rotating Cube examples/rotating-cube Uniforms, push constants, depth
Off-screen Rendering examples/offscreen-rendering Headless rendering
Hello Compute examples/hello-compute Compute pipeline
Render to Texture examples/render-to-texture Multi-pass rendering

API reference

Generated from Doxygen comments in the public modules. Start here:

Building the documentation

pip install -r docs/requirements.txt
cd docs && mkdocs serve

Open http://127.0.0.1:8000. Static output is written to docs/site/.

With CMake (when Doxygen and Python3 are found):

cmake --build --preset <your-preset> --target docs
cmake --build --preset <your-preset> --target docs-serve

License

Copyright © 2026 IASoft (PVT) LTD. Licensed under the PolyForm Noncommercial License 1.0.0.