Bindless Images#

Warning

Experimental features:

  • May be replaced, updated, or removed at any time.

  • Do not require maintaining API/ABI stability of their own additions over time.

  • Do not require conformance testing of their own additions.

Terminology#

For the purposes of this document, a bindless image is one which provides access to the underlying data via image reference handles. At the application level, this allows the user to implement programs where the number of images is not known at compile-time, and store all handles to images – irrespective of varying formats and layouts – in some container, e.g. a dynamic array.

Motivation#

The DPC++ bindless images extension has sought to provide the flexibility of bindless images at the SYCL application level. This extension has been implemented using the CUDA backend of the DPC++ PI. With the movement to migrate from PI to the Unified Runtime in DPC++, as seen in Port CUDA plugin to Unified Runtime, the Unified Runtime’s support for this experimental feature would enable the DPC++ bindless images extension to be migrated to UR without issue.

Overview#

In this document, we propose the following experimental additions to the Unified Runtime:

  • Bindless images support

    • Sampled images

    • Unsampled images

    • Mipmaps

    • Image arrays

    • Cubemaps

    • USM backed images

  • Interoperability support

    • External memory

    • Semaphores

API#

Enums#

Changelog#