Vulkan SC Samples

Vulkan SC samples are included in Jetson Linux. This topic provides detailed steps to build and run these samples on the target.

Building the Samples

Prerequisites

  • The cmake with version 3.18 or later

  • The build-essential Linux package

  • NvSci headers. The headers are packaged in public_sources.tbz2 that can be downloaded from NVIDIA Developer Center.
    1. To extract them, on host run:

    tar -I lbzip2 -xvf public_sources.tbz2 -C ./
    cd ./Linux_for_Tegra/source/public
    mkdir nvsci_headers
    tar -xvf nvsci_headers.tbz2 -C ./nvsci_headers
    
    1. Copy all the headers files under nvsci_headers to /usr/include on target.

Build on the Target

The sample source files are available in the /usr/src/nvidia/vulkan-sc/vulkan-sc-ecosystem/vulkan-sc-sample/ directory. The currently provided samples are:

  • vksc_01tri

  • vk_01tri

  • vksc_computeparticles

  • vk_computeparticles

  • vulkanscinfo

The samples can only be built on target. To build the samples, run the following commands:

export VKSC_SAMPLES=/usr/src/nvidia/vulkan-sc/vulkan-sc-ecosystem/vulkan-sc-sample
cd $VKSC_SAMPLES
mkdir build
cd build
cmake ../
make

After the samples have been built, the sample binaries are generated in the build/bin directory

Running Vulkan SC Samples

Running the vulkanscinfo Command

The vulkanscinfo command summarizes the core features of the Vulkan SC API and saves the output to the text/JSON/HTML file.

  • To display a list of all available options for the vulkanscinfo command, specify the –help option:

    cd $VKSC_SAMPLES/build/bin
    ./vulkanscinfo —help
    
  • To save the output to an HTML file, specify the –html option:

    cd $VKSC_SAMPLES/build/bin
    ./vulkanscinfo --html
    

    Note: By default you will not have write permission for the /usr/src folder, the output HTML could not be able to save. To fix the issue, run the following command:

    chmod u+w $VKSC_SAMPLES/build/bin
    

    or to run it under your your HOME folder:

    cd $HOME
    $VKSC_SAMPLES/build/bin/vulkanscinfo --html
    

Running the vksc_01tri Sample

The vksc_01tri sample already contains the pipeline cache generated for gv11b and ga10b GPUs, and the cache binary in hex format is embedded in the pipeline_cache.hpp file that is built with the vksc_01tri binary. Therefore, you can run the sample directly by following these steps:

  1. Save the offscreen rendering result to an image file.

    cd $VKSC_SAMPLES/build/bin
    ./vksc_01tri -o
    
  2. Display the rendering result by using OpenWFD.

    cd $VKSC_SAMPLES/build/bin
    ./vksc_01tri -w
    
  3. You can generate JSON file by using the JSON layer library as follows:

    cd $VKSC_SAMPLES/build/bin
    export VK_LAYER_PATH=/etc/vulkansc/icd.d
    export VK_JSON_FILE_PATH=$PWD/data/pipeline/vksc_01tri/
    ./vk_01tri
    
    The following files will be generated in VK_JSON_FILE_PATH:
    • vk_01tri_pipeline_0.json

    • vk_01tri_pipeline_0.vert.spv

    • vk_01tri_pipeline_0.frag.spv

  4. Generate the pipeline cache by running the PCC tool.

    cd $VKSC_SAMPLES/build/bin/data/pipeline/vksc_01tri
    pcc -chip [gv11b|ga10b] -path ./ -out pipeline_cache.bin
    
  5. Rerun the vksc_01tri sample with the pipeline cache generated in step 4.

    cd $VKSC_SAMPLES/build/bin
    ./vksc_01tri -c -o
    

    Note: By specifying the -c option, the application will look for the pipeline_cache.bin files in the ./data/pipeline/vksc_01tri directory.

Running the vksc_computeparticles Sample

The vksc_computeparticles sample already contains the pipeline cache generated for gv11b and ga10b GPUs, and the cache binary in hex format is embedded in the pipeline_cache.hpp file that is built with the vksc_computeparticles binary. Therefore, you can run the sample directly. To read the texture data, the vksc_computeparticles sample uses the libktx.so external library that is located in the $VKSC_SAMPLES/external/ktx directory.

As a result, the library path must be specified before you run the samples as follows:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$VKSC_SAMPLES/external/ktx

To run the vksc_computeparticles sample,

  1. Save the offscreen rendering result to an image file.
    cd $VKSC_SAMPLES/build/bin
    ./vksc_computeparticles -o
    
  2. Display the rendering result by using OpenWFD.
    cd $VKSC_SAMPLES/build/bin
    ./vksc_computeparticles -w
    
  3. You can generate JSON file by using the JSON layer library as follows:
    cd $VKSC_SAMPLES/build/bin
    export VK_LAYER_PATH=/etc/vulkansc/icd.d
    export VK_JSON_FILE_PATH=$PWD/data/pipeline/computeparticles/
    ./vk_computeparticles
    

    The following files are generated in VK_JSON_FILE_PATH :

    • vk_computeparticles_pipeline_0.json

    • vk_computeparticles_pipeline_1.json

    • vk_computeparticles_pipeline_0.frag.spv

    • vk_computeparticles_pipeline_0.vert.spv

    This sample uses two different pipelines, graphics pipeline and compute pipeline; therefore, two JSON files are generated

  4. Generate the pipeline cache by using the PCC tool.
    cd $VKSC_SAMPLES/build/bin/data/pipeline/computeparticles
    pcc -chip [gv11b|ga10b] -path ./ -out pipeline_cache.bin
    
  5. Rerun the vksc_computeparticles sample with the pipeline cache generated in step 4.
    cd $VKSC_SAMPLES/build/bin
    ./vksc_computeparticles -c -o
    

    Note: By specifying the -c option, the application will look for the pipeline_cache.bin file in the ./data/pipeline/vksc_computeparticles directory.