Difference between revisions of "IMX8/Multimedia/GPU/Vulkan"

From RidgeRun Developer Connection
< IMX8‎ | Multimedia‎ | GPU
Jump to: navigation, search
(Android)
(Folder Content)
Line 26: Line 26:
  
 
==Folder Content==
 
==Folder Content==
 +
Below you can find a brief description of the examples present inside the Vulkan folder:
 +
 +
*'''ComputeParticles:''' This demo is about an attraction based particle system. A shader storage buffer is used to store particle on which the compute shader does some physics calculations. The buffer is then used by the graphics pipeline for rendering with a gradient texture for. It demonstrates the use of memory barriers for synchronizing vertex buffer access between a compute and graphics pipeline.
 +
 +
 +
*'''DevBatch:''' This demo is about an early development prototype of a basic quad batch implementation that can be used to implement the native batch for Vulkan. This will allow the UI library to work with Vulkan.
 +
 +
*'''Gears:''' This is a Vulkan interpretation of ''glxgears''. Procedurally generates separate meshes for each gear, with every mesh having it's own uniform buffer object for animation. It also demonstrates how to use different descriptor sets.
 +
 +
*'''MeshInstancing:'''
 +
*'''Texturing:'''
 +
*'''TexturingArrays:'''
 +
*'''TexturingCubeMap:'''
 +
*'''Triangle:'''
 +
*'''Vulkan101:'''
 +
*'''VulkanComputeMandelbrot:'''
 +
*'''VulkanInfo:'''
  
 
<noinclude>{{IMX8/Foot|<Replace with "previous" page>|<Replace with "next" page>}}</noinclude>
 
<noinclude>{{IMX8/Foot|<Replace with "previous" page>|<Replace with "next" page>}}</noinclude>

Revision as of 13:32, 1 November 2018


NXP Partner Program Registered Vertical.jpg NXP Partner Program Horizontal.jpg
  Index  





Vulkan

The i.MX8 supports Vulkan®, which is a graphics and compute API consisting of procedures and functions to specify shader programs, compute kernels, objects, and operations involved in producing high-quality graphical images, specifically color images of three-dimensional objects. Vulkan is also a pipeline with programmable and state-driven fixed-function stages that are invoked by a set of specific drawing operations. You can find more information and official documentation in this reference.

Subgroups

Vulkan 1.1 supports subgroups as a new feature. They enable highly-efficient sharing and manipulation of data between multiple tasks running in parallel on a GPU. Modern heterogeneous hardware like GPUs gain performance by using parallel hardware and exposing a parallel programming model to target this hardware. When a user wants to run N parallel tasks for their algorithm, a GPU would divide this N-sized workload between the compute units of that GPU. Each compute unit of the GPU is then capable of running one or more of these parallel tasks concurrently. In Vulkan, the data that runs on a single compute unit of a GPU is referred as the local workgroup, and an individual parallel task as an invocation.

Vulkan 1.1 introduces a mechanism to share data between the invocations that run in parallel on a single compute unit. These concurrently running invocations are named the subgroup. This subgroup allows for the sharing of data between a much smaller set of invocations than the local workgroup could, but at a significantly higher performance. While shared memory is only available in compute shaders, sharing data via subgroup operations is allowed in all shader stages via optionally supported stages

In this tutorial you can find how to use the subgroup functionality of Vulkan 1.1.

Software Development Kit

The Vulkan applications can be developed for Windows, Linux, macOS and Android.

Windows, Linux & macOS

The LunarG SDK provides Vulkan application developers with essential tools to accelerate the development process. There are Windows, Linux, and macOS versions of LunarG SDK for Vulkan. You can find the official LunarG SDK in this site.

Android

Google provides everything needed to incorporate Vulkan into Android games and other apps where graphics performance is a key. You are able download the API, samples and documentation from the Android developer website.

Demo Examples

There are some examples on this repository that can be used to check the basics required to understand how to write applications on Vulkan. You can find those examples on the /opt/imx-gpu-sdk/Vulkan/ directory inside the i.MX8 system.

Folder Content

Below you can find a brief description of the examples present inside the Vulkan folder:

  • ComputeParticles: This demo is about an attraction based particle system. A shader storage buffer is used to store particle on which the compute shader does some physics calculations. The buffer is then used by the graphics pipeline for rendering with a gradient texture for. It demonstrates the use of memory barriers for synchronizing vertex buffer access between a compute and graphics pipeline.


  • DevBatch: This demo is about an early development prototype of a basic quad batch implementation that can be used to implement the native batch for Vulkan. This will allow the UI library to work with Vulkan.
  • Gears: This is a Vulkan interpretation of glxgears. Procedurally generates separate meshes for each gear, with every mesh having it's own uniform buffer object for animation. It also demonstrates how to use different descriptor sets.
  • MeshInstancing:
  • Texturing:
  • TexturingArrays:
  • TexturingCubeMap:
  • Triangle:
  • Vulkan101:
  • VulkanComputeMandelbrot:
  • VulkanInfo:


[[IMX8/<Replace with "previous" page>|Previous: <Replace with "previous" page>]] Index [[IMX8/<Replace with "next" page>|Next: <Replace with "next" page>]]