The Vulkan Profiles Tools are a collection of tools delivered with the Vulkan SDK for Vulkan application developers to leverage Vulkan Profiles while developing a Vulkan application

LunarG

Copyright © 2021-2022 LunarG, Inc.

Creative Commons

Vulkan Profiles Tools (BETA)

The Vulkan Profiles Tools are a collection of tools delivered with the Vulkan SDK for Vulkan application developers to leverage Vulkan Profiles while developing a Vulkan application.


Contact Information


Information for Developing or Contributing:

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


How to Build and Run

BUILD.md Includes directions for building all components as well as running tests.


Version Tagging Scheme

Updates to the Vulkan Profiles repository which correspond to a new Vulkan specification release are tagged using the following format: v (e.g., v1.1.96).

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

This scheme was adopted following the 1.1.96 Vulkan specification release.


License

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


Downloads

Vulkan Profiles Tools is delivered with the Vulkan SDK.

Owner
The Khronos Group
Connecting Software to Silicon
The Khronos Group
Comments
  • Implement vk.xml new limittypes

    Implement vk.xml new limittypes

    • Add exact, bits, minmul, minpot, maxpot new limit types
    • Add python workarounds to fix capabilities limitype from vk.xml
    • Fix noauto capabilities being interpreted incorrectly.
  • library: add missing debug messages

    library: add missing debug messages

    The Profiles Library Debug build is supposed to announce why a profile is not supported by a device, which is important for figuring out issues like:

    VP_ANDROID_baseline_2021.json unsupported on ShieldTV
    https://github.com/KhronosGroup/Vulkan-Profiles/issues/87
    

    The problem was that genvp.py wasn't generating messages at every location where a profile was determined to be unsupported. These changes add messages (some more helpful than others) for all cases where support is determined to be lacking, to the generator and thus also to the generated code.

    The extra debug messages confuse the MockDebugMessageCallback, which expects an exact set of messages in an exact order. Since the test doesn't mock the running device, running the test on different devices will produce different sets of messages, which cannot be easily accommodated in a generic test. So these changes also include a minor change to MockDebugMessageCallback logic, to emit unexpected messages received (for informatory purposes) without failing the test; then the test only fails if it finishes and not all expected messages were received in order.

  • profiles layer: Fix checking features and properties support

    profiles layer: Fix checking features and properties support

    Promoted struct should be checked against the vulkan API version instead of extension. Effective API version is determined as in validation layers. Removed TransferDeviceValues as it's no longer needed, since all checks are correct and proper warnings will be emitted. #103 will have to be rebased and updated from this

  • Call For Feedback:  Add profiles layer settings struct for Layer Tests

    Call For Feedback: Add profiles layer settings struct for Layer Tests

    Reworked settings on layer tests to use a programmatic method instead of relying on environment variables.

    This change allows tests to add a structure containing environment variable settings to the CreateInstance() pNext chain.

    Incorporated review feedback, other than the layer path, which will need to be addressed with and through CI.

    <answered, mostly> Open questions:

    • Include all settings or just the relevant layer-specific ones?
    • Struct names, default constructor, namespace issues?
    • Default values for settings in VkProfileLayerSettingsEXT structure
    • Left VK_LAYER_PATH in tests -- it is unusual to set this variable inside the tests themselves. Typically it is set before (and outside) running the tests to control which layer is getting tested. It is also a no-op on Android.
    • Significant overlap of the LayerSettings and the VkProfileLayerSettingsEXT structures

    Basically, is this suitable for using across all the layer tests or are modifications or improvements desired? All feedback is good feedback.

  • Create Android test package for `VpLibrary_test_api_create_device_android`

    Create Android test package for `VpLibrary_test_api_create_device_android`

    Added infrastructure and associated files to build the VpLibrary_test_api_create_device_android test for Android along with an installable test package. The resulting APK can then be installed and run on an Android device.

    Initial cmake command (see BUILD.md for specifics):

    cmake -Bandroid-build \
      -DCMAKE_TOOLCHAIN_FILE=/home/mark/gdev/android-ndk-r21d/build/cmake/android.toolchain.cmake \
      -DANDROID_PLATFORM=28 \
      -DANDROID_BUILD_TOOLS=30.0.3 \
      -DANDROID_ABI=arm64-v8a
    

    Change into the android-build dir and run:

    cmake --build . --parallel

    Install the APK as follows:

    adb install -r apk/out/VpLibrary_test_api_create_device_android.apk

    And run the test:

    adb shell am start -a android.intent.MAIN -c android-intent.category.LAUNCH -n com.example.VpLibrary_test_api_create_device_android/android.app.NativeActivity --es args --gtest_catch_exceptions=0

    Test output goes to logcat, which you can pull and scrape looking for VpLibrary_test_api_create_device_android:. You should observe something like the following:

    01-31 14:01:51.710  I VpLibrary_test_api_create_device_android: Intent args = --gtest_catch_exceptions=0
    01-31 14:01:51.710  D VpLibrary_test_api_create_device_android: filter = --gtest_catch_exceptions=0
    01-31 14:01:51.724  I VpLibrary_test_api_create_device_android: [ RUN      ] library_api.vpCreateDevice
    01-31 14:01:51.735  I VpLibrary_test_api_create_device_android: [       OK ]library_api.vpCreateDevice (10 ms)
    01-31 14:01:51.735  I VpLibrary_test_api_create_device_android: [ RUN      ] library_api.vpGetPhysicalDeviceProfileSupport
    01-31 14:01:51.738  I VpLibrary_test_api_create_device_android: [       OK ]library_api.vpGetPhysicalDeviceProfileSupport (3 ms)
    01-31 14:01:51.738  I VpLibrary_test_api_create_device_android: ==== Tests PASSED ====
    
  • Incorrect lineWidthGranularity check in profile library (2022 roadmap)

    Incorrect lineWidthGranularity check in profile library (2022 roadmap)

    For the 2022 roadmap, the profiles library has the following checks for lineWidthGranularity:

      ret = ret && (s->properties.limits.lineWidthGranularity <= 0.5);
      ret = ret && (isMultiple(0.5, s->properties.limits.lineWidthGranularity));
    

    The second check fails if lineWidthGranularity is 0, which should be allowed by the profile if the wideLines feature is not supported (only the supported limit was lowered from 1.0 to 0.5, the unsupported limit is still 0.0).

    Further, it doesn't really make sense to check that the lineWidthGranularity is a multiple of anything, since as far as I can tell that is not required by the Vulkan specification. Perhaps instead it should be checking that the lineWidthRange is a multiple of the lineWidthGranularity (but only if wideLines is supported)?

  • test failures on emmeria

    test failures on emmeria

    I moved the Jenkins VulkanProfiles Linux configuration from Linux-Mesa to just Linux (because the Linux-Mesa machine was going to be unavailable for a time). I thought the tests should run on any Linux machine.

    They ran correctly on aurelia: http://erusea:8080/job/VulkanProfiles/1845/BITS=64,BUILD_MODE=Release,label=Linux/console

    But they failed on emmeria: http://erusea:8080/job/VulkanProfiles/BITS=64,BUILD_MODE=Debug,label=Linux/1845/console

    Building remotely on Emmeria-Linux-AMD (Ubuntu Linux mesa AMD Ubuntu18) in workspace /home/lunarg/.jenkins/workspace/VulkanProfiles/64-bit/Debug
    ...
    The following tests FAILED:
          3 - VpLibrary_test_api_create_device_header_only (Failed)
          4 - VpLibrary_test_api_create_device_with_source (Failed)
          6 - VpLibrary_test_profile_examples (Failed)
         14 - VkLayer_tests (Failed)
    

    For now, I changed the test configuration to Aurelia-Linux-NVIDIA, because that seems to work. But I believe the tests should be able to run and pass on emmeria as well.

  • layer: Simulating capabilities on Android can only be 92 bytes long, unable to set all capabilities.

    layer: Simulating capabilities on Android can only be 92 bytes long, unable to set all capabilities.

    Setting debug.vulkan.khronos_profiles.simulate_capabilities SIMULATE_API_VERSION_BIT,SIMULATE_EXTENSIONS_BIT,SIMULATE_FEATURES_BIT,SIMULATE_PROPERTIES_BIT,SIMULATE_FORMATS_BITfails.

    Error message: Value [...] is too long, 115 bytes vs a max of 92

sour is a complete multiplayer Sauerbraten experience in the web delivered as a single Docker image.

sour sour is a complete multiplayer Sauerbraten experience in the web delivered as a single Docker image. Overview I have always loved playing Sauerbr

Jan 1, 2023
A collection of services with great free tiers for developers on a budget. Sponsored by Mockoon, the best mock API tool.

A collection of services with great free tiers for developers on a budget. Sponsored by Mockoon, the best mock API tool.

Jan 4, 2023
A collection of tools, libraries, and tests for Vulkan shader compilation.

Shaderc A collection of tools, libraries and tests for shader compilation. At the moment it includes: glslc, a command line compiler for GLSL/HLSL to

Dec 29, 2022
The Raspberry Pi Pico SDK (henceforth the SDK) provides the headers, libraries and build system necessary

The Raspberry Pi Pico SDK (henceforth the SDK) provides the headers, libraries and build system necessary to write programs for the RP2040-based devices such as the Raspberry Pi Pico in C, C++ or assembly language.

Jan 5, 2023
The Gecko SDK (GSDK) combines all Silicon Labs 32-bit IoT product software development kits (SDKs) based on Gecko Platform into a single, integrated SDK.

Silicon Labs Gecko SDK (GSDK) The Gecko SDK (GSDK) combines Silicon Labs wireless software development kits (SDKs) and Gecko Platform into a single, i

Dec 28, 2022
A personal collection of Windows CVE I have turned in to exploit source, as well as a collection of payloads I've written to be used in conjunction with these exploits.

This repository contains a personal collection of Windows CVE I have turned in to exploit source, as well as a collection of payloads I've written to

Dec 28, 2022
Some hypervisor research notes. There is also a useful exploit template that you can use to verify / falsify any assumptions you may make while auditing code, and for exploit development.

Introduction Over the past few weeks, I've been doing some hypervisor research here and there, with most of my focus being on PCI device emulation cod

Nov 18, 2022
Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use while playing the game and help you top the leaderboard.
Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use while playing the game and help you top the leaderboard.

WORDament_Solver Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use whil

Aug 19, 2021
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.

ContactGot Contents Description How to use Requirements Engineering Installation Documentation Design Architecture Demonstration 1. Description During

Sep 17, 2022
The largest possible square on a board while avoiding obstacles.

BiggestSquare The largest possible square on a board while avoiding obstacles. Resume This project is a little remake of the Epitech's bsq project Thi

Dec 6, 2021
A utility to automate the installation, maintenance, and debugging of Asterisk/DAHDI, while integrating additional patches to provide the richest telephony experience

PhreakScript A utility to automate the installation, maintenance, and debugging of Asterisk/DAHDI, while integrating additional patches to provide the

Dec 22, 2022
Patch for Titanfall 2 that helps prevent disconnects while the servers are being attacked by a DoS attack.

Titanfall2 DeltaBuf patch This patch for Titanfall 2 helps prevent disconnects while the servers are being attacked by a DoS attack. Disclaimer This i

Jan 8, 2023
This is the source code for for the Plugin GAS Associate, that is supposed to make your life easier while using Unreal's Gameplay Ability System.

GASAssociate Description: This is the source code for for the Plugin GAS Associate, that is supposed to make your life easier while using Unreal's Gam

Dec 14, 2022
SynthLab is a synth plugin framework for developing software synthesizers.

SynthLab SynthLab is a synth plugin framework for developing software synthesizers.

Dec 7, 2022
Developing a Drone from scratch in ROS Gazebo
Developing a Drone from scratch in ROS Gazebo

Project Building a drone and developing its control system. Table of Contents Project Table of Contents About The Project Tech Stack File Structure Ge

Oct 17, 2022
Orca - Advanced Malware with multifeatures written in ASM/C/C++ , work on all windows versions ! (some features still under developing and not stable)
Orca - Advanced Malware with multifeatures written in ASM/C/C++ , work on all windows versions  !  (some features still under developing and not stable)

About Orca Orca is an Advanced Malware with multifeatures written in ASM/C/C++ features Run in Background (Hidden Mode) Records keystrokes and saves t

Dec 26, 2022
Half-Life : Extended main branch for developing purposes
Half-Life : Extended main branch for developing purposes

Half Life : Extended SDK Source Code of Half Life : Extended as a open source modbase for everyone publicly, make your own mod with alot of features e

Dec 12, 2022
A cross-platform framework for developing spatial audio algorithms and software in C/C++

git: https://github.com/leomccormack/Spatial_Audio_Framework doxygen: https://leomccormack.github.io/Spatial_Audio_Framework/ About The Spatial_Audio_

Dec 23, 2022
First Rendition of Static Factory Design Method for developing studies and more using C++ ACSIL in Sierra Chart
First Rendition of Static Factory Design Method for developing studies and more using C++ ACSIL in Sierra Chart

Thanks for stopping by. This is my first GitHub repo. SierraChart ACSIL C++ STUDY DEV TEMPLATE This is meant to be a template for developing study gro

Jan 18, 2022