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