All Projects → talvos → talvos

talvos / talvos

Licence: BSD-3-Clause license
Talvos is a dynamic-analysis framework and debugger for Vulkan/SPIR-V programs.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to talvos

Floor
A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.
Stars: ✭ 166 (+147.76%)
Mutual labels:  vulkan, spir-v
Agi
Android GPU Inspector
Stars: ✭ 327 (+388.06%)
Mutual labels:  debugger, vulkan
Kazan
Mirror; Work-in-progress software-rendering Vulkan implementation
Stars: ✭ 226 (+237.31%)
Mutual labels:  vulkan, spir-v
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+1610.45%)
Mutual labels:  vulkan, spir-v
SDA
SDA is a rich cross-platform tool for reverse engineering that focused firstly on analysis of computer games. I'm trying to create a mix of the Ghidra, Cheat Engine and x64dbg. My tool will combine static and dynamic analysis of programs. Now SDA is being developed.
Stars: ✭ 98 (+46.27%)
Mutual labels:  debugger, dynamic-analysis
Sharpvk
C# Bindings for the Vulkan API & SPIR-V
Stars: ✭ 138 (+105.97%)
Mutual labels:  vulkan, spir-v
Vulkano
Safe and rich Rust wrapper around the Vulkan API
Stars: ✭ 2,950 (+4302.99%)
Mutual labels:  vulkan, spir-v
Rlsl
Rust to SPIR-V compiler
Stars: ✭ 546 (+714.93%)
Mutual labels:  vulkan, spir-v
xshade
"cross shade" meta shading language and compiler
Stars: ✭ 37 (-44.78%)
Mutual labels:  vulkan, spir-v
Gapid
GAPID is a collection of tools that allows you to inspect, tweak and replay calls from an application to a graphics driver.
Stars: ✭ 1,975 (+2847.76%)
Mutual labels:  debugger, vulkan
Spear
SPEAR is a integrated domain specific language translating C++17 to SPIR-V at host runtime
Stars: ✭ 45 (-32.84%)
Mutual labels:  vulkan, spir-v
spirv cross
Safe Rust wrapper around SPIRV-Cross
Stars: ✭ 75 (+11.94%)
Mutual labels:  vulkan, spir-v
Vk9
Direct3D 9 compatibility layer using Vulkan.
Stars: ✭ 799 (+1092.54%)
Mutual labels:  vulkan, spir-v
Reshade
A generic post-processing injector for games and video software.
Stars: ✭ 2,285 (+3310.45%)
Mutual labels:  vulkan, spir-v
Dxvk
Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine
Stars: ✭ 7,117 (+10522.39%)
Mutual labels:  vulkan, spir-v
Smol V
SMOL-V: like Vulkan/Khronos SPIR-V, but smaller.
Stars: ✭ 230 (+243.28%)
Mutual labels:  vulkan, spir-v
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (+613.43%)
Mutual labels:  vulkan, spir-v
Echo
A New Cross-Platform 2D 3D Game Engine
Stars: ✭ 520 (+676.12%)
Mutual labels:  vulkan, spir-v
Renderdoc
RenderDoc is a stand-alone graphics debugging tool.
Stars: ✭ 5,969 (+8808.96%)
Mutual labels:  debugger, vulkan
SPIR-V-Blast
Converting the C-like language to binary or human readable SPIR-V
Stars: ✭ 17 (-74.63%)
Mutual labels:  vulkan, spir-v

Talvos

This project provides a SPIR-V interpreter and Vulkan device emulator, with the aim of providing an extensible dynamic analysis framework and debugger for SPIR-V shaders. Talvos provides an implementation of the Vulkan API to enable it to execute real Vulkan applications. Linux, macOS, and Windows are supported.

Talvos is distributed under a three-clause BSD license. For full license terms please see the LICENSE file distributed with this source code.

Status

Talvos is still in the early stages of development. Compute shaders are the current focus, and Talvos is currently capable of executing various SPIR-V shaders generated from OpenCL kernels compiled with Clspv. Talvos can also handle vertex and fragment shaders, with basic support for offscreen rendering currently in progress. Talvos currently passes around 15% of the Vulkan conformance test suite.

The codebase is changing relatively quickly as new features are added, so the internal and external APIs are all subject to change until we reach the 1.0 release (suggestions for improvements always welcome).

Future work may involve extending the emulator to support tessellation and geometry shaders, onscreen rendering, and implementing missing Vulkan API functions to reach conformance. Contributions in these (or other) areas would be extremely welcome.

Building

More detailed build instructions are provided here.

Building Talvos requires a compiler that supports C++17, and Python to enable the internal test suite. Talvos depends on SPIRV-Headers and SPIRV-Tools, and uses GNU readline to enhance the interactive debugger.

Configure with CMake, indicating where SPIRV-Headers and SPIRV-Tools are installed if necessary:

cmake <path_to_talvos_source>                           \
      -DCMAKE_BUILD_TYPE=Debug                          \
      -DCMAKE_INSTALL_PREFIX=<target_install_directory> \
      -DSPIRV_INCLUDE_DIR=<...>                         \
      -DSPIRV_TOOLS_INCLUDE_DIR=<...>                   \
      -DSPIRV_TOOLS_LIBRARY_DIR=<...>

Using the Debug build type is strongly recommended while Talvos is still in the early stages of development, to enable assertions that guard unimplemented features.

Once configured, use make (or your preferred build tool) to build and install. Run make test to run the internal test suite.

Usage

More detailed usage information is provided here.

Talvos provides an implementation of the Vulkan API which allows existing Vulkan applications to be executed through the emulator without modification. Simply linking an application against libtalvos-vulkan.so or talvos-vulkan.lib is enough for it to use Talvos.

Alternatively, the talvos-cmd command provides a simple interface to the emulator. An example that runs a simple N-Body simulation can be found in test/misc/nbody.tcf.

The following command is used to execute a Talvos command file:

talvos-cmd nbody.tcf

The command file contains commands that allocate and initialize storage buffers and launch SPIR-V shaders. There are also commands that dump the output of storage buffers, to verify that the shader executed as expected.

To enable the interactive debugger, set the environment variable TALVOS_INTERACTIVE=1. This will drop to a prompt when a shader begins executing. Use help to list the available commands, which include step to advance through the interpreter, print to view an instruction result, and switch to change the current invocation.

More information

Raise issues and ask questions via GitHub.

The Talvos documentation provides more detailed information about using Talvos, as well as information for developers.

Doxygen documentation for the source code is also available.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].