VK_KHR_object_refresh

{generated}/meta/{refprefix}VK_KHR_object_refresh.adoc

Other Extension Metadata

Last Modified Date

2020-01-14

IP Status

No known IP claims.

Contributors
  • Aidan Fabius, Core Avionics
  • Mark Bellamy, ARM

Description

Many safety critical environments are required to contend with single event upsets (SEUs). These occur when a bit in a physical device’s memory or register is inadvertently flipped. It is typical for host memory to include automatic error detection (EDC) or correction (ECC) on platforms where this a concern. However, device-accessible memory may not have these protections. In that case, the data must be periodically refreshed.

Unextended Vulkan provides a variety of methods to mitigate SEUs. Image and buffer objects can be bound to SEU-safe memory, and many object types can be refreshed explicitly by the application by reloading or regenerating the object’s data. However, implementations may store internal object-specific data in non-SEU-safe memory, and unextended Vulkan provides no clear method to determine which object types this applies to or how to refresh that data.

This extension adds a mechanism to query which object types store implementation-internal data in device regions susceptible to SEUs, and to explicitly refresh that implementation-internal data.

Issues

1) Should this extension refresh object data, or validate whether or not the data has been corrupted?

RESOLVED This extension should refresh data, not validate it. This reduces application error-handling complexity, and invalid data would have to be refreshed anyway.

2) Should object refreshes be done using the host or with command buffers?

RESOLVED Object refreshes should be done with command buffers. This reduces the synchronization complexity.

3) Refresh operations will need a pipeline barrier so that subsequent commands will see the results of the refresh. What access flags and pipeline stage should apply to refresh operations? Should they use new flags and stages, or reuse an existing one?

RESOLVED Object refreshes are considered to be a transfer operation for the purposes of pipeline barriers.

4) Should this extension add a feature bit?

RESOLVED A feature bit is not necessary. In the case of this extension being promoted to core, implementations that do not support or require refreshing of any object types will return 0 for the count parameter of vkGetPhysicalDeviceRefreshableObjectTypesKHR.

Examples

None.

Version History

  • Revision 1, 2020-01-14