Git Product home page Git Product logo

vulkansc-loader's Introduction

Vulkan SC Loader

This project provides the Khronos official Vulkan SC Loader for all platforms.

IMPORTANT NOTE: This repository is to be used with the Vulkan SC API and should not be confused with the similar repository that exists for the Vulkan API (see https://github.com/KhronosGroup/Vulkan-Loader). While it is possible to build the Vulkan version from this repository, this repository contains a forked version of the upstream code and may not be up-to-date with the latest changes in the upstream repository.

Introduction

Vulkan is an explicit API, enabling direct control over how GPUs actually work. As such, Vulkan supports systems that have multiple GPUs, each running with a different driver, or ICD (Installable Client Driver). Vulkan also supports multiple global contexts (instances, in Vulkan terminology). The ICD loader is a library that is placed between a Vulkan application and any number of Vulkan drivers, in order to support multiple drivers and the instance-level functionality that works across these drivers. Additionally, the loader manages inserting Vulkan layer libraries, such as validation layers, between an application and the drivers.

Vulkan SC is an API derived from Vulkan with various changes applied to fulfill the special requirements of safety critical applications. The Vulkan SC API has a large overlap with Vulkan. As such, we endeavor to leverage as many of the Vulkan Ecosystem components as possible.

This repository contains the Vulkan SC loader that is used for Linux, Windows, and QNX.

The following components are available in this repository:

This repository contains the Vulkan SC Loader which is intended for development environments, and is not expected to be used in production (safety) environments.

NOTE: This repository is a downstream fork of KhronosGroup/Vulkan-Loader which is periodically rebased.

This repository continues to have a functioning Vulkan loader with equivalent functionality to the upstream branch point.

The choice of Vulkan or Vulkan SC support is determined at build time.

The sc_main branch is currently based on the sdk-1.3.257 Vulkan-Loader tag and contains Vulkan SC modifications to support the Vulkan SC 1.0 API.

Contact Information

Information for Developing or Contributing

Please see the CONTRIBUTING.md file in this repository for more details. Please see the GOVERNANCE.md file in this repository for repository management details.

How to Build and Run

BUILD.md includes directions for building all components.

Architecture and interface information for the loader is in docs/LoaderInterfaceArchitecture.md.

Version Tagging Scheme

Updates to this repository which correspond to a new Vulkan specification release are tagged using the following format: v<version> (e.g., v1.3.266).

Note: Marked version releases have undergone thorough testing but do not imply the same quality level as SDK tags. SDK tags follow the vulkan-sdk-<version>.<patch> format (e.g., vulkan-sdk-1.3.266.0).

This scheme was adopted following the 1.3.266 Vulkan specification release.

For Vulkan SC, updates to a new API version will be tagged using the following format vksc<version>.<patch> (e.g., vksc1.0.13).

License

This work is released as open source under a Apache-style license from Khronos including a Khronos copyright.

Acknowledgements

While this project has been developed primarily by LunarG, Inc., there are many other companies and individuals making this possible: Valve Corporation, funding project development; Khronos providing oversight and hosting of the project.

Original Vulkan SC modifications have been contributed by NVIDIA CORPORATION.

vulkansc-loader's People

Contributors

aqnuep avatar charles-lunarg avatar chrisforbes avatar cnorthrop avatar courtney-g avatar courtney-lunarg avatar davidlunarg avatar dependabot[bot] avatar dustin-lunarg avatar felixdoerre avatar greg-lunarg avatar ianatlunarg avatar ianelliottus avatar jeremy-lunarg avatar jon-lunarg avatar juan-lunarg avatar jzulauf-lunarg avatar karl-lunarg avatar lenny-lunarg avatar lunarpapillo avatar mark-lunarg avatar marky-lunarg avatar mikes-lunarg avatar null77 avatar olvaffe avatar pdaniell-nv avatar shannon-lunarg avatar stroyan avatar tobine avatar tonybarbour avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vulkansc-loader's Issues

Loader substitutes INITIALIZATION_FAILED->INCOMPATIBLE_DRIVER in vkCreateInstance

Describe the bug
The code at this location: https://github.com/KhronosGroup/VulkanSC-Loader/blob/sc_main/loader/loader.c#L5446 discards the VkResults returned from individual driver vkCreateInstance calls. If the loader is unable to find a driver where vkCreateInstance returns VK_SUCCESS, it unconditionally returns VK_ERROR_INCOMPATIBLE_DRIVER.

This causes the following VKSC CTS test cases to fail:
dEQP-VKSC.sc.application_parameters.create_instance.invalid_parameter_key
dEQP-VKSC.sc.application_parameters.create_instance.invalid_parameter_value

The spec requires vkCreateInstance to return VK_ERROR_INITIALIZATION_FAILED when an invalid key or value is specified:

"If VkApplicationParametersEXT::key is not a valid implementation-defined application parameter key for the instance being created with vendorID, or if value is not a valid value for the specified key, vkCreateInstance will fail and return VK_ERROR_INITIALIZATION_FAILED."

Environment

  • OS: Ubuntu 23.04
  • Bitdepth: 64-bit
  • GPU: NVIDIA GEFORCE RTX 2080
  • Graphics Driver: Nvidia
  • Enabled layers: None

VK_LOADER_DEBUG output
Relevant snippet:
WARNING: terminator_CreateInstance: Received return code -3 from call to vkCreateInstance in ICD libnvidia-vksc-core.so.1. Skipping this driver.
-3 corresponds to VK_ERROR_INITIALIZATION_FAILED, but the application receives VK_ERROR_INCOMPATIBLE_DRIVER instead. It doesn't look like VK_ERROR_INCOMPATIBLE_DRIVER is printed from the loader, but the following line is:
ERROR | DRIVER: terminator_CreateInstance: Found no drivers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.