Skip to content

Commit 3aac4ef

Browse files
Update EXT to VK_KHR_robustness2 (#313)
1 parent 85f4cbe commit 3aac4ef

File tree

6 files changed

+31
-12
lines changed

6 files changed

+31
-12
lines changed

README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ The Vulkan Guide can be built as a single page using `asciidoctor guide.adoc`
200200

201201
// include::{chapters}robustness.adoc[]
202202

203-
* `VK_EXT_image_robustness`, `VK_EXT_robustness2`, `VK_EXT_pipeline_robustness`
203+
* `VK_EXT_image_robustness`, `VK_KHR_robustness2`, `VK_EXT_pipeline_robustness`
204204

205205
== xref:{chapters}dynamic_state.adoc[Dynamic State]
206206

chapters/robustness.adoc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Turning on robustness may incur a runtime performance cost. Application writers
3131

3232
All Vulkan implementations are required to support the `robustBufferAccess` feature. The link:https://docs.vulkan.org/spec/latest/chapters/features.html#features-robustBufferAccess[spec describes what is considered out-of-bounds] and also how it should be handled. Implementations are given some amount of flexibility for `robustBufferAccess`. An example would be accessing a `vec4(x,y,z,w)` where the `w` value is out-of-bounds as the spec allows the implementation to decide if the `x`, `y`, and `z` are also considered out-of-bounds or not.
3333

34-
The `robustBufferAccess` feature has some limitations as it only covers buffers and not images. It also allows out-of-bounds writes and atomics to modify the data of the buffer being accessed. For applications looking for a stronger form of robustness, there is link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2].
34+
The `robustBufferAccess` feature has some limitations as it only covers buffers and not images. It also allows out-of-bounds writes and atomics to modify the data of the buffer being accessed. For applications looking for a stronger form of robustness, there is link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2].
3535

3636
When images are out-of-bounds core Vulkan link:https://docs.vulkan.org/spec/latest/chapters/textures.html#textures-output-coordinate-validation[provides the guarantee] that stores and atomics have no effect on the memory being accessed.
3737

@@ -66,9 +66,15 @@ The link:https://docs.vulkan.org/spec/latest/chapters/features.html#features-rob
6666

6767
The `robustImageAccess` feature provides no guarantees about the values returned for access to an invalid LOD, it is still undefined behavior.
6868

69-
== VK_EXT_robustness2
69+
== VK_KHR_robustness2
7070

71-
Some applications, such as those being ported from other APIs such as D3D12, require stricter guarantees than `robustBufferAccess` and `robustImageAccess` provide. The link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2] extension adds this by exposing 3 new robustness features, described in the following sections. For some implementations these extra guarantees can come at a performance cost. Applications that don't need the extra robustness are recommended to use `robustBufferAccess` and/or `robustImageAccess` instead where possible.
71+
[NOTE]
72+
.Important
73+
====
74+
VK_EXT_robustness2 works the same way.
75+
====
76+
77+
Some applications, such as those being ported from other APIs such as D3D12, require stricter guarantees than `robustBufferAccess` and `robustImageAccess` provide. The link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2] extension adds this by exposing 3 new robustness features, described in the following sections. For some implementations these extra guarantees can come at a performance cost. Applications that don't need the extra robustness are recommended to use `robustBufferAccess` and/or `robustImageAccess` instead where possible.
7278

7379
=== robustBufferAccess2
7480

lang/jp/README-jp.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ Vulkan Guide は、`asciidoctor guide.adoc` を使って1つのページとし
174174

175175
// include::{chapters}robustness.adoc[]
176176

177-
* `VK_EXT_image_robustness`, `VK_EXT_robustness2`
177+
* `VK_EXT_image_robustness`, `VK_KHR_robustness2`, `VK_EXT_pipeline_robustness`
178178

179179
== xref:{chapters}dynamic_state.adoc[動的な状態(Dynamic State)]
180180

lang/jp/chapters/robustness.adoc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ image::../../../chapters/images/robustness_flow.png[robustness_flow.png]
3030

3131
すべての Vulkan の実装は `robustBufferAccess` 機能をサポートする必要があります。仕様では、link:https://docs.vulkan.org/spec/latest/chapters/features.html#features-robustBufferAccess[何が境界を越えたとみなされるか]、またどのように処理されるべきかが説明されています。`robustBufferAccess` については、実装にある程度の柔軟性が与えられています。たとえば、`vec4(x,y,z,w)` へのアクセスで `w` の値が境界を越えた場合、仕様では `x`、`y`、`z` も境界を越えたとみなすかどうかを実装が決定できるようになっています。
3232

33-
`robustBufferAccess` 機能は、バッファのみを対象としており、イメージは対象外であるため、いくつかの制限があります。また、アクセスされているバッファのデータを変更する境界を越えた書き込みやアトミックを許可してしまいます。より強力な堅牢性を求めるアプリケーションのために、link:https://www.khronos.org/registry/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2] があります。
33+
`robustBufferAccess` 機能は、バッファのみを対象としており、イメージは対象外であるため、いくつかの制限があります。また、アクセスされているバッファのデータを変更する境界を越えた書き込みやアトミックを許可してしまいます。より強力な堅牢性を求めるアプリケーションのために、link:https://www.khronos.org/registry/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2] があります。
3434

3535
イメージが境界を越えた場合、コア Vulkan では、ストアやアトミックがアクセスされるメモリに影響を与えないことがlink:https://docs.vulkan.org/spec/latest/chapters/textures.html#textures-output-coordinate-validation[保証されています]。
3636

@@ -65,9 +65,15 @@ link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_image_robu
6565

6666
`robustImageAccess` 機能は、無効な LOD へのアクセスに対して返される値については何の保証もありません。
6767

68-
== VK_EXT_robustness2
68+
== VK_KHR_robustness2
6969

70-
D3D12 などの他の API から移植されるアプリケーションなどでは、`robustBufferAccess` や `robustImageAccess` が提供するものよりも厳しい保証が必要になる場合があります。link:https://www.khronos.org/registry/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2] 拡張機能では、以下のセクションで説明する3つの新しい堅牢性機能を公開することで、保証を追加しています。一部の実装では、これらの追加保証はパフォーマンスを犠牲にしています。追加の堅牢性を必要としないアプリケーションでは、可能な限り `robustBufferAccess` や `robustImageAccess` を代わりに使用することをお勧めします。
70+
[NOTE]
71+
.Important
72+
====
73+
VK_EXT_robustness2も同様に動作します
74+
====
75+
76+
D3D12 などの他の API から移植されるアプリケーションなどでは、`robustBufferAccess` や `robustImageAccess` が提供するものよりも厳しい保証が必要になる場合があります。link:https://www.khronos.org/registry/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2] 拡張機能では、以下のセクションで説明する3つの新しい堅牢性機能を公開することで、保証を追加しています。一部の実装では、これらの追加保証はパフォーマンスを犠牲にしています。追加の堅牢性を必要としないアプリケーションでは、可能な限り `robustBufferAccess` や `robustImageAccess` を代わりに使用することをお勧めします。
7177

7278
=== robustBufferAccess2
7379

lang/kor/README-kor.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ Vulkan에서 사용하는 특수한 용어에 대한 혼란을 막기 위해 명
193193

194194
// include::{chapters}robustness.adoc[]
195195

196-
* `VK_EXT_image_robustness`, `VK_EXT_robustness2`, `VK_EXT_pipeline_robustness`
196+
* `VK_EXT_image_robustness`, `VK_KHR_robustness2`, `VK_EXT_pipeline_robustness`
197197

198198
== xref:{chapters}dynamic_state.adoc[동적 스테이트]
199199

lang/kor/chapters/robustness.adoc

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ image::../../../chapters/images/robustness_flow.png[robustness_flow.png]
2727

2828
모든 Vulkan 구현은 `robustBufferAccess` 기능을 지원해야 합니다. link:https://docs.vulkan.org/spec/latest/chapters/features.html#features-robustBufferAccess[사양서는 어떤 것이 범위를 벗어난 것으로 간주되는지] 그리고 어떻게 처리해야 하는지를 설명합니다.구현에는 `robustBufferAccess` 에 대해 어느 정도의 유연성이 부여됩니다. 예를 들어 `w` 값이 범위를 벗어난 `vec4(x,y,z,w)` 에 접근하는 경우, `x`, `y`, `z` 도 범위를 벗어난 것으로 간주할지 여부를 구현에서 결정할 수 있도록 사양에서 허용하고 있기 때문입니다.
2929

30-
`robustBufferAccess` 기능은 이미지가 아닌 버퍼만 다루기 때문에 몇 가지 제한이 있습니다. 또한 접근 중인 버퍼의 데이터를 수정하기 위해 범위를 벗어난 쓰기나 아토믹을 허용해버립니다. 더 강력한 형태의 견고성을 원하는 애플리케이션의 경우, link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2]가 있습니다.
30+
`robustBufferAccess` 기능은 이미지가 아닌 버퍼만 다루기 때문에 몇 가지 제한이 있습니다. 또한 접근 중인 버퍼의 데이터를 수정하기 위해 범위를 벗어난 쓰기나 아토믹을 허용해버립니다. 더 강력한 형태의 견고성을 원하는 애플리케이션의 경우, link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2]가 있습니다.
3131

3232
이미지가 범위를 벗어난 경우, 코어 Vulkan에서는 스토어나 아토믹이 접근하려는 메모리에 영향을 주지 않는 것이 link:https://docs.vulkan.org/spec/latest/chapters/textures.html#textures-output-coordinate-validation[보장되어 있습니다].
3333

@@ -62,9 +62,16 @@ link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_image_robu
6262

6363
`robustImageAccess` 기능은 유효하지 않은 LOD에 접근할 때 반환되는 값에 대한 보장을 제공하지 않으며, 아직 정의되지 않은 동작입니다.
6464

65-
== VK_EXT_robustness2
65+
== VK_KHR_robustness2
6666

67-
D3D12와 같은 다른 API에서 포팅된 애플리케이션과 같은 일부 애플리케이션은 `robustBufferAccess` 와 `robustImageAccess` 가 제공하는 것보다 더 엄격한 보장을 필요로 합니다. 다음 섹션에서 설명하는 3 가지 새로운 견고성 기능을 공개하여 link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_robustness2.html[VK_EXT_robustness2] 확장 기능을 추가합니다. 일부 구현의 경우 이러한 추가 보장은 성능 저하를 초래할 수 있습니다. 추가 견고성이 필요하지 않은 애플리케이션은 가능하면 `robustBufferAccess` 및/또는 `robustImageAccess` 를 대신 사용하는 것이 좋습니다.
67+
68+
[NOTE]
69+
.Important
70+
====
71+
VK_EXT_robustness2는 같은 방식으로 작동합니다.
72+
====
73+
74+
D3D12와 같은 다른 API에서 포팅된 애플리케이션과 같은 일부 애플리케이션은 `robustBufferAccess` 와 `robustImageAccess` 가 제공하는 것보다 더 엄격한 보장을 필요로 합니다. 다음 섹션에서 설명하는 3 가지 새로운 견고성 기능을 공개하여 link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_robustness2.html[VK_KHR_robustness2] 확장 기능을 추가합니다. 일부 구현의 경우 이러한 추가 보장은 성능 저하를 초래할 수 있습니다. 추가 견고성이 필요하지 않은 애플리케이션은 가능하면 `robustBufferAccess` 및/또는 `robustImageAccess` 를 대신 사용하는 것이 좋습니다.
6875

6976
=== robustBufferAccess2
7077

0 commit comments

Comments
 (0)