Skip to content
Permalink
Browse files

Change log for February 3, 2019 Vulkan 1.1.99 spec update:

  * Update release number to 99.

Public Issues:

  * Add missing pname:pMemoryHostPointerProperties description to
    flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896).
  * Minor markup fixes (public pull request 900).
  * Minor update to `khronos.css` and markup fixes (originally proposed in
    public pull request 901, but done via an internal MR).

Internal Issues:

  * Document restrictions on image queries for Y'CbCr formats in the
    <<features-formats-requiring-sampler-ycbcr-conversion>> table as well as
    for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo
    (internal issue 1361).
  * Correct type of the code:FragSizeEXT built-in in the
    <<interfaces-builtin-variables, Built-In Variables>> section (internal
    issue 1526).
  * Clean up math in the <<textures, Image Operations>> chapter by
    refactoring, using better naming conventions, updating diagrams to use
    the correct orientation, etc. (internal merge request 2968).
  * Fix minor typos for slink:VkImageCreateInfo and
    slink:VkImageStencilUsageCreateInfoEXT.
  * Add missing documentation for tlink:VkResolveModeFlagsKHR.
  * Fix extension dependency of pname:scalarBlockLayout in the
    <<features-features-requirements, Feature Requirements>> section.
  * Fix indexing math for shader binding table calculations in the
    <<shader-binding-table-indexing-rules, Indexing Rules>> section, and use
    spelling "`any-hit`" consistently.
  * Reconcile valid usage statement and text for sampled image layouts in
    slink:VkWriteDescriptorSet
    (KhronosGroup/Vulkan-ValidationLayers#551).
  * Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations
    require a 64-bit integer for physical storage buffer pointers in the
    <<spirvenv-module-validation, Validation Rules within a Module>>
    section.
  * Update to KaTeX 10.0.

New Extensions:

  * `VK_EXT_filter_cubic`
  * `VK_NV_dedicated_allocation_image_aliasing`
  • Loading branch information...
oddhack committed Feb 4, 2019
1 parent e666c58 commit b59ec03ee3f44086ebc3e4c556952afe9e743655
Showing with 42,449 additions and 11,236 deletions.
  1. +8 −2 .gitlab-ci.yml
  2. +48 −0 ChangeLog.txt
  3. +1 −1 Makefile
  4. +35 −0 appendices/VK_EXT_filter_cubic.txt
  5. 0 appendices/VK_KHR_vulkan_memory_model.txt
  6. +48 −0 appendices/VK_NV_dedicated_allocation_image_aliasing.txt
  7. 0 appendices/memorymodel.txt
  8. +5 −3 appendices/spirvenv.txt
  9. +4 −4 chapters/VK_NVX_device_generated_commands/generation.txt
  10. +1 −1 chapters/VK_NV_ray_tracing/raytracing-pipelines.txt
  11. +2 −2 chapters/VK_NV_ray_tracing/raytracing-shaders.txt
  12. +41 −10 chapters/VK_NV_ray_tracing/raytracing.txt
  13. +5 −5 chapters/copies.txt
  14. +6 −6 chapters/descriptorsets.txt
  15. +46 −10 chapters/dispatch.txt
  16. +169 −43 chapters/drawing.txt
  17. +151 −26 chapters/features.txt
  18. +22 −22 chapters/interfaces.txt
  19. +1 −1 chapters/pipelines.txt
  20. +8 −0 chapters/renderpass.txt
  21. +80 −6 chapters/resources.txt
  22. +9 −7 chapters/samplers.txt
  23. +442 −259 chapters/textures.txt
  24. +3 −0 config/khronos.css
  25. +2 −2 copyright-spec.txt
  26. +2 −2 images/raypipe.svg
  27. +1,190 −0 images/vulkantexture0-corner-alternative-a-ll.svg
  28. +1,205 −0 images/vulkantexture0-ll.svg
  29. +1,019 −0 images/vulkantexture1-ll.svg
  30. +510 −0 images/vulkantexture2-ll.svg
  31. +41 −3 include/vulkan/vulkan_core.h
  32. +56 −34 katex/README.md
  33. +335 −0 katex/contrib/auto-render.js
  34. +1 −1 katex/contrib/auto-render.min.js
  35. +14 −0 katex/contrib/copy-tex.css
  36. +208 −0 katex/contrib/copy-tex.js
  37. +1 −0 katex/contrib/copy-tex.min.css
  38. +1 −0 katex/contrib/copy-tex.min.js
  39. +137 −0 katex/contrib/mathtex-script-type.js
  40. +1 −0 katex/contrib/mathtex-script-type.min.js
  41. BIN katex/fonts/KaTeX_AMS-Regular.eot
  42. BIN katex/fonts/KaTeX_AMS-Regular.ttf
  43. BIN katex/fonts/KaTeX_AMS-Regular.woff
  44. BIN katex/fonts/KaTeX_AMS-Regular.woff2
  45. BIN katex/fonts/KaTeX_Caligraphic-Bold.eot
  46. BIN katex/fonts/KaTeX_Caligraphic-Bold.ttf
  47. BIN katex/fonts/KaTeX_Caligraphic-Bold.woff
  48. BIN katex/fonts/KaTeX_Caligraphic-Bold.woff2
  49. BIN katex/fonts/KaTeX_Caligraphic-Regular.eot
  50. BIN katex/fonts/KaTeX_Caligraphic-Regular.ttf
  51. BIN katex/fonts/KaTeX_Caligraphic-Regular.woff
  52. BIN katex/fonts/KaTeX_Caligraphic-Regular.woff2
  53. BIN katex/fonts/KaTeX_Fraktur-Bold.eot
  54. BIN katex/fonts/KaTeX_Fraktur-Bold.ttf
  55. BIN katex/fonts/KaTeX_Fraktur-Bold.woff
  56. BIN katex/fonts/KaTeX_Fraktur-Bold.woff2
  57. BIN katex/fonts/KaTeX_Fraktur-Regular.eot
  58. BIN katex/fonts/KaTeX_Fraktur-Regular.ttf
  59. BIN katex/fonts/KaTeX_Fraktur-Regular.woff
  60. BIN katex/fonts/KaTeX_Fraktur-Regular.woff2
  61. BIN katex/fonts/KaTeX_Main-Bold.eot
  62. BIN katex/fonts/KaTeX_Main-Bold.ttf
  63. BIN katex/fonts/KaTeX_Main-Bold.woff
  64. BIN katex/fonts/KaTeX_Main-Bold.woff2
  65. BIN katex/fonts/KaTeX_Main-BoldItalic.ttf
  66. BIN katex/fonts/KaTeX_Main-BoldItalic.woff
  67. BIN katex/fonts/KaTeX_Main-BoldItalic.woff2
  68. BIN katex/fonts/KaTeX_Main-Italic.eot
  69. BIN katex/fonts/KaTeX_Main-Italic.ttf
  70. BIN katex/fonts/KaTeX_Main-Italic.woff
  71. BIN katex/fonts/KaTeX_Main-Italic.woff2
  72. BIN katex/fonts/KaTeX_Main-Regular.eot
  73. BIN katex/fonts/KaTeX_Main-Regular.ttf
  74. BIN katex/fonts/KaTeX_Main-Regular.woff
  75. BIN katex/fonts/KaTeX_Main-Regular.woff2
  76. BIN katex/fonts/KaTeX_Math-BoldItalic.eot
  77. BIN katex/fonts/KaTeX_Math-BoldItalic.ttf
  78. BIN katex/fonts/KaTeX_Math-BoldItalic.woff
  79. BIN katex/fonts/KaTeX_Math-BoldItalic.woff2
  80. BIN katex/fonts/KaTeX_Math-Italic.eot
  81. BIN katex/fonts/KaTeX_Math-Italic.ttf
  82. BIN katex/fonts/KaTeX_Math-Italic.woff
  83. BIN katex/fonts/KaTeX_Math-Italic.woff2
  84. BIN katex/fonts/KaTeX_Math-Regular.eot
  85. BIN katex/fonts/KaTeX_Math-Regular.ttf
  86. BIN katex/fonts/KaTeX_Math-Regular.woff
  87. BIN katex/fonts/KaTeX_Math-Regular.woff2
  88. BIN katex/fonts/KaTeX_SansSerif-Bold.eot
  89. BIN katex/fonts/KaTeX_SansSerif-Bold.ttf
  90. BIN katex/fonts/KaTeX_SansSerif-Bold.woff
  91. BIN katex/fonts/KaTeX_SansSerif-Bold.woff2
  92. BIN katex/fonts/KaTeX_SansSerif-Italic.eot
  93. BIN katex/fonts/KaTeX_SansSerif-Italic.ttf
  94. BIN katex/fonts/KaTeX_SansSerif-Italic.woff
  95. BIN katex/fonts/KaTeX_SansSerif-Italic.woff2
  96. BIN katex/fonts/KaTeX_SansSerif-Regular.eot
  97. BIN katex/fonts/KaTeX_SansSerif-Regular.ttf
  98. BIN katex/fonts/KaTeX_SansSerif-Regular.woff
  99. BIN katex/fonts/KaTeX_SansSerif-Regular.woff2
  100. BIN katex/fonts/KaTeX_Script-Regular.eot
  101. BIN katex/fonts/KaTeX_Script-Regular.ttf
  102. BIN katex/fonts/KaTeX_Script-Regular.woff
  103. BIN katex/fonts/KaTeX_Script-Regular.woff2
  104. BIN katex/fonts/KaTeX_Size1-Regular.eot
  105. BIN katex/fonts/KaTeX_Size1-Regular.ttf
  106. BIN katex/fonts/KaTeX_Size1-Regular.woff
  107. BIN katex/fonts/KaTeX_Size1-Regular.woff2
  108. BIN katex/fonts/KaTeX_Size2-Regular.eot
  109. BIN katex/fonts/KaTeX_Size2-Regular.ttf
  110. BIN katex/fonts/KaTeX_Size2-Regular.woff
  111. BIN katex/fonts/KaTeX_Size2-Regular.woff2
  112. BIN katex/fonts/KaTeX_Size3-Regular.eot
  113. BIN katex/fonts/KaTeX_Size3-Regular.ttf
  114. BIN katex/fonts/KaTeX_Size3-Regular.woff
  115. BIN katex/fonts/KaTeX_Size3-Regular.woff2
  116. BIN katex/fonts/KaTeX_Size4-Regular.eot
  117. BIN katex/fonts/KaTeX_Size4-Regular.ttf
  118. BIN katex/fonts/KaTeX_Size4-Regular.woff
  119. BIN katex/fonts/KaTeX_Size4-Regular.woff2
  120. BIN katex/fonts/KaTeX_Typewriter-Regular.eot
  121. BIN katex/fonts/KaTeX_Typewriter-Regular.ttf
  122. BIN katex/fonts/KaTeX_Typewriter-Regular.woff
  123. BIN katex/fonts/KaTeX_Typewriter-Regular.woff2
  124. +450 −419 katex/katex.css
  125. +15,525 −8,139 katex/katex.js
  126. +1 −1 katex/katex.min.css
  127. +1 −4 katex/katex.min.js
  128. +16,083 −0 katex/katex.mjs
  129. +5 −0 reflib.py
  130. +1 −1 reflow_count.py
  131. +76 −2,144 xml/check_spec_links.py
  132. +17 −0 xml/spec_tools/__init__.py
  133. +172 −0 xml/spec_tools/base_printer.py
  134. +265 −0 xml/spec_tools/console_printer.py
  135. +541 −0 xml/spec_tools/entity_db.py
  136. +454 −0 xml/spec_tools/html_printer.py
  137. +234 −0 xml/spec_tools/macro_checker.py
  138. +1,574 −0 xml/spec_tools/macro_checker_file.py
  139. +247 −0 xml/spec_tools/main.py
  140. +285 −0 xml/spec_tools/shared.py
  141. +461 −68 xml/test_check_spec_links.py
  142. +93 −0 xml/test_check_spec_links_api_specific.py
  143. +42 −0 xml/test_entity_db.py
  144. +64 −10 xml/vk.xml
@@ -7,18 +7,24 @@ spec-generate:
- apt-get update -qq
- apt-get install -y -qq gcc git python3 python3-termcolor python3-pytest ruby
- apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx
# Force-install an older version of i18n so the 1.5.2 version, which
# won't work with ruby 2.1, doesn't abort the CI job when installing
# other gems which need it.
- gem install i18n -v 1.5.1
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
script:
- ./makeAllExts QUIET= -j${nproc} -Otarget html styleguide registry manhtmlpages checkinc checklinks validusage
# Internal self-test of the script
# Internal self-test of the check_spec_links script
- ( cd xml && py.test-3 )
- mkdir -p out/checks
- xml/check_spec_links.py --html=out/checks/problems.html > /dev/null || true
# Breaking the build if # of errors increases. We should manually ratchet ignore_count down as errors get fixed.
# If there are unfixable errors, add '--ignore_count #' where '#' is the
# number of them. This is a slightly crude way of enforcing "don't add
# errors" but simpler than the alternatives (running against master,
# diff, etc)
- xml/check_spec_links.py -Werror --ignore_count 0
# Build the actual spec
- ./makeAllExts QUIET= -j${nproc} -Otarget checkinc checklinks validusage html styleguide registry manhtmlpages
artifacts:
when: always
paths:
@@ -8,6 +8,54 @@ public pull requests that have been accepted.

-----------------------------------------------------

Change log for February 3, 2019 Vulkan 1.1.99 spec update:

* Update release number to 99.

Public Issues:

* Add missing pname:pMemoryHostPointerProperties description to
flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896).
* Minor markup fixes (public pull request 900).
* Minor update to `khronos.css` and markup fixes (originally proposed in
public pull request 901, but done via an internal MR).

Internal Issues:

* Document restrictions on image queries for Y'CbCr formats in the
<<features-formats-requiring-sampler-ycbcr-conversion>> table as well as
for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo
(internal issue 1361).
* Correct type of the code:FragSizeEXT built-in in the
<<interfaces-builtin-variables, Built-In Variables>> section (internal
issue 1526).
* Clean up math in the <<textures, Image Operations>> chapter by
refactoring, using better naming conventions, updating diagrams to use
the correct orientation, etc. (internal merge request 2968).
* Fix minor typos for slink:VkImageCreateInfo and
slink:VkImageStencilUsageCreateInfoEXT.
* Add missing documentation for tlink:VkResolveModeFlagsKHR.
* Fix extension dependency of pname:scalarBlockLayout in the
<<features-features-requirements, Feature Requirements>> section.
* Fix indexing math for shader binding table calculations in the
<<shader-binding-table-indexing-rules, Indexing Rules>> section, and use
spelling "`any-hit`" consistently.
* Reconcile valid usage statement and text for sampled image layouts in
slink:VkWriteDescriptorSet
(https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/551).
* Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations
require a 64-bit integer for physical storage buffer pointers in the
<<spirvenv-module-validation, Validation Rules within a Module>>
section.
* Update to KaTeX 10.0.

New Extensions:

* `VK_EXT_filter_cubic`
* `VK_NV_dedicated_allocation_image_aliasing`

-----------------------------------------------------

Change log for January 13, 2019 Vulkan 1.1.98 spec update:

* Update release number to 98.
@@ -115,7 +115,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output

NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 98
PATCHVERSION = 99
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else
@@ -0,0 +1,35 @@
include::meta/VK_EXT_filter_cubic.txt[]

*Last Modified Date*::
2019-01-24
*Contact
- Bill Licea-Kane, Qualcomm Technologies, Inc.
*Contributors*::
- Andrew Garrard, Samsung
- Daniel Koch, NVIDIA
- Donald Scorgie, Imagination Technologies
- Graeme Leese, Broadcom
- Jan-Herald Fredericksen, ARM
- Jeff Leger, Qualcomm Technologies, Inc.
- Tobias Hector, AMD
- Tom Olson, ARM
- Stuart Smith, Imagination Technologies

`VK_EXT_filter_cubic` extends VK_IMG_filter_cubic.

It documents cubic filtering of other image view types.
It adds new structures which may be added to the pname:pNext chain of
VkPhysicalDeviceImageFormatInfo2 and VkImageFormatProperties2 which can: be
used to determine which image types and which image view types support cubic
filtering.

=== New Structures

* slink:VkPhysicalDeviceImageViewImageFormatInfoEXT
* slink:VkFilterCubicImageViewImageFormatPropertiesEXT


=== Version History

* Revision 1, 2019-01-24 (wwlk)
- Initial version
No changes.
@@ -0,0 +1,48 @@
include::meta/VK_NV_dedicated_allocation_image_aliasing.txt[]

*Last Modified Date*::
2019-01-04
*Contributors*::
- Nuno Subtil, NVIDIA
- Jeff Bolz, NVIDIA
- Eric Werness, NVIDIA
- Axel Gneiting, id Software


This extension allows applications to alias images on dedicated allocations,
subject to specific restrictions: the extent and the number of layers in the
image being aliased must be smaller than or equal to those of the original
image for which the allocation was created, and every other image parameter
must match.


=== New Object Types

None.

=== New Enum Constants

* Extending elink:VkStructureType
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV

=== New Enums

None.

=== New Structures

* slink:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV

=== New Functions

None.

=== Issues

None.


=== Version History

* Revision 1, 2019-01-04 (Nuno Subtil)
- Internal revisions
0 appendices/memorymodel.txt 100755 → 100644
No changes.
@@ -857,11 +857,11 @@ ifdef::VK_EXT_transform_feedback[]
endif::VK_EXT_transform_feedback[]
ifdef::VK_NV_ray_tracing[]
* code:RayPayloadNV storage class must: only be used in ray generation,
any hit, closest hit or miss shaders.
any-hit, closest hit or miss shaders.
* code:IncomingRayPayloadNV storage class must: only be used in closest
hit, any hit, or miss shaders.
hit, any-hit, or miss shaders.
* code:HitAttributeNV storage class must: only be used in intersection,
any hit, or closest hit shaders.
any-hit, or closest hit shaders.
* code:CallableDataNV storage class must: only be used in ray generation,
closest hit, miss, and callable shaders.
* code:IncomingCallableDataNV storage class must only be used in callable
@@ -889,6 +889,8 @@ ifdef::VK_EXT_buffer_device_address[]
** Any access chain instruction that accesses into a code:RowMajor matrix
must: only be used as the code:Pointer operand to code:OpLoad or
code:OpStore.
** code:OpConvertUToPtr and code:OpConvertPtrToU must: use an integer type
whose code:Width is 64.
endif::VK_EXT_buffer_device_address[]


@@ -139,15 +139,15 @@ include::../../api/structs/VkCmdProcessCommandsInfoNVX.txt[]
If pname:targetCommandBuffer is provided, the pname:maxSequencesCount
must: not exceed the reservation's pname:maxSequencesCount
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338]]
If pname:sequencesCountBuffer is used, its usage flag must: have
the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
If pname:sequencesCountBuffer is used, its usage flag must: have the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339]]
If pname:sequencesCountBuffer is used, pname:sequencesCountOffset must:
be aligned to
sname:VkDeviceGeneratedCommandsLimitsNVX::pname:minSequenceCountBufferOffsetAlignment
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340]]
If pname:sequencesIndexBuffer is used, its usage flag must: have
the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
If pname:sequencesIndexBuffer is used, its usage flag must: have the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341]]
If pname:sequencesIndexBuffer is used, pname:sequencesIndexOffset must:
be aligned to
@@ -143,7 +143,7 @@ include::../../api/structs/VkRayTracingShaderGroupCreateInfoNV.txt[]
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV and
ename:VK_SHADER_UNUSED_NV otherwise.
* pname:anyHitShader is the optional index of the any hit shader from
* pname:anyHitShader is the optional index of the any-hit shader from
sname:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group if
the shader group has pname:type of
ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or
@@ -55,13 +55,13 @@ forcibly terminated.

The any-hit shader is executed after the intersection shader reports an
intersection that lies within the current [eq]#[tmin,tmax]# of the ray.
The main use of any hit shaders is to programmatically decide whether or not
The main use of any-hit shaders is to programmatically decide whether or not
an intersection will be accepted.
The intersection will be accepted unless the shader calls the
code:OpIgnoreIntersectionNV instruction.

[[shaders-any-hit-execution]]
=== Any Hit Shader Execution
=== Any-Hit Shader Execution

The order in which intersections are found along a ray, and therefore the
order in which any-hit shaders are executed, is unspecified.
@@ -319,37 +319,68 @@ The code:sbtRecordStride and code:sbtRecordOffset values are passed in as
parameters to code:traceNV() calls made in the shaders.
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
Specification for more details.
In SPIR-V, these correspond to the code:SBTOffset and code:SBTStride
parameters to the code:OpTraceNV instruction.

The result of this computation is then added to
pname:hitProgramShaderBindingTableBaseIndex, a base index passed to
pname:hitShaderBindingOffset, a base offset passed to
flink:vkCmdTraceRaysNV.

The complete rule to compute a hit shader binding table record index is:
The complete rule to compute a hit shader binding table record address in
the pname:hitShaderBindingTableBuffer is:

:: [eq]#code:instanceShaderBindingTableRecordOffset {plus}
code:hitProgramShaderBindingTableBaseIndex {plus} _geometryIndex_
{times} code:sbtRecordStride {plus} code:sbtRecordOffset#
:: [eq]#pname:hitShaderBindingOffset {plus} pname:hitShaderBindingStride
{times} ( code:instanceShaderBindingTableRecordOffset {plus}
_geometryIndex_ {times} code:sbtRecordStride {plus}
code:sbtRecordOffset )#


==== Miss Shaders

A Miss shader is executed whenever a ray query fails to find an intersection
A miss shader is executed whenever a ray query fails to find an intersection
for the given scene geometry.
Multiple miss shaders may: be executed throughout a ray tracing dispatch.

The base for the computation of miss shader locations is
code:missProgramShaderBindingTableBaseIndex, a base index passed into
pname:missShaderBindingOffset, a base offset passed into
flink:vkCmdTraceRaysNV.

The code:missIndex value is passed in as parameters to code:traceNV() calls
made in the shaders.
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
Specification for more details.
In SPIR-V, this corresponds to the code:MissIndex parameter to the
code:OpTraceNV instruction.

The complete rule to compute a miss shader binding table record address is:
The complete rule to compute a miss shader binding table record address in
the pname:missShaderBindingTableBuffer is:

:: [eq]#code:missProgramShaderBindingTableBaseIndex {times}
pname:missShaderBindingStride {plus} code:missIndex#
:: [eq]#pname:missShaderBindingOffset {plus} pname:missShaderBindingStride
{times} code:missIndex#


==== Callable Shaders

A callable shader is executed when requested by a ray tracing shader.
Multiple callable shaders may: be executed throughout a ray tracing
dispatch.

The base for the computation of callable shader locations is
code:callableShaderBindingOffset, a base offset passed into
flink:vkCmdTraceRaysNV.

The code:sbtRecordIndex value is passed in as a parameter to
code:executeCallableNV() calls made in the shaders.
See Section 8.19 (Ray Tracing Functions) of the OpenGL Shading Language
Specification for more details.
In SPIR-V, this corresponds to the code:SBTIndex parameter to the
code:OpExecuteCallableNV instruction.

The complete rule to compute a callable shader binding table record address
in the pname:callableShaderBindingTableBuffer is:

:: [eq]#code:callableShaderBindingOffset {plus}
pname:callableShaderBindingStride {times} code:sbtRecordIndex#


[[acceleration-structure]]
@@ -1615,16 +1615,16 @@ endif::VK_KHR_shared_presentable_image[]
If pname:filter is ename:VK_FILTER_LINEAR, then the
<<resources-image-format-features,format features>> of pname:srcImage
must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
ifdef::VK_IMG_filter_cubic[]
ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
* [[VUID-vkCmdBlitImage-filter-02002]]
If pname:filter is ename:VK_FILTER_CUBIC_IMG, then the
If pname:filter is ename:VK_FILTER_CUBIC_EXT, then the
<<resources-image-format-features,format features>> of pname:srcImage
must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT.
* [[VUID-vkCmdBlitImage-filter-00237]]
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: have
If pname:filter is ename:VK_FILTER_CUBIC_EXT, pname:srcImage must: have
a elink:VkImageType of ename:VK_IMAGE_TYPE_2D
endif::VK_IMG_filter_cubic[]
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
ifdef::VK_VERSION_1_1[]
* [[VUID-vkCmdBlitImage-commandBuffer-01834]]
If pname:commandBuffer is an unprotected command buffer, then
@@ -2746,10 +2746,10 @@ endif::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
member of each element of pname:pImageInfo must: be
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
ename:VK_IMAGE_LAYOUT_GENERAL
member of each element of pname:pImageInfo must: be a member of the list
given in <<descriptorsets-sampledimage, Sampled Image>> or
<<descriptorsets-combinedimagesampler, Combined Image Sampler>>,
corresponding to its type
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
the pname:imageView member of each element of pname:pImageInfo must:
@@ -2871,8 +2871,8 @@ include::../api/structs/VkDescriptorBufferInfo.txt[]
====
When setting pname:range to ename:VK_WHOLE_SIZE, the effective range must:
not be larger than the maximum range for the descriptor type
(<<features-limits-maxUniformBufferRange, maxUniformBufferRange>> or
<<features-limits-maxStorageBufferRange, maxStorageBufferRange>>).
(<<features-limits-maxUniformBufferRange, pname:maxUniformBufferRange>> or
<<features-limits-maxStorageBufferRange, pname:maxStorageBufferRange>>).
This means that ename:VK_WHOLE_SIZE is not typically useful in the common
case where uniform buffer descriptors are suballocated from a buffer that is
much larger than pname:maxUniformBufferRange.

0 comments on commit b59ec03

Please sign in to comment.
You can’t perform that action at this time.