1// Copyright (c) 2014-2020 Khronos Group. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5include::{generated}/meta/{refprefix}VK_KHR_object_refresh.adoc[] 6 7=== Other Extension Metadata 8 9*Last Modified Date*:: 10 2020-01-14 11*IP Status*:: 12 No known IP claims. 13*Contributors*:: 14 - Aidan Fabius, Core Avionics 15 - Mark Bellamy, ARM 16 17=== Description 18 19Many safety critical environments are required to contend with single event 20upsets (SEUs). 21These occur when a bit in a physical device's memory or register is 22inadvertently flipped. 23It is typical for host memory to include automatic error detection (EDC) or 24correction (ECC) on platforms where this a concern. 25However, device-accessible memory may not have these protections. 26In that case, the data must be periodically refreshed. 27 28Unextended Vulkan provides a variety of methods to mitigate SEUs. 29Image and buffer objects can be bound to SEU-safe memory, and many object 30types can be refreshed explicitly by the application by reloading or 31regenerating the object's data. 32However, implementations may store internal object-specific data in 33non-SEU-safe memory, and unextended Vulkan provides no clear method to 34determine which object types this applies to or how to refresh that data. 35 36This extension adds a mechanism to query which object types store 37implementation-internal data in device regions susceptible to SEUs, and to 38explicitly refresh that implementation-internal data. 39 40include::{generated}/interfaces/VK_KHR_object_refresh.adoc[] 41 42=== Issues 43 441) Should this extension refresh object data, or validate whether or not the 45data has been corrupted? 46 47*RESOLVED* This extension should refresh data, not validate it. 48This reduces application error-handling complexity, and invalid data would 49have to be refreshed anyway. 50 512) Should object refreshes be done using the host or with command buffers? 52 53*RESOLVED* Object refreshes should be done with command buffers. 54This reduces the synchronization complexity. 55 563) Refresh operations will need a pipeline barrier so that subsequent 57commands will see the results of the refresh. 58What access flags and pipeline stage should apply to refresh operations? 59Should they use new flags and stages, or reuse an existing one? 60 61*RESOLVED* Object refreshes are considered to be a transfer operation for 62the purposes of pipeline barriers. 63 644) Should this extension add a feature bit? 65 66*RESOLVED* A feature bit is not necessary. 67In the case of this extension being promoted to core, implementations that 68do not support or require refreshing of any object types will return 0 for 69the pname:count parameter of 70fname:vkGetPhysicalDeviceRefreshableObjectTypesKHR. 71 72=== Examples 73 74None. 75 76=== Version History 77 78 * Revision 1, 2020-01-14 79