Skip to content

Commit

Permalink
Change log for April 27, 2023 Vulkan 1.3.249 spec update:
Browse files Browse the repository at this point in the history
Github Issues:

  * Add a non-normative NOTE on variability in
    <<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
    implementations, and move the theoretical implementation described in
    that section into the NOTE (public issue 1361).
  * Fix XML attributes of slink:VkMicromapEXT structure members to allow
    `NULL` handles (public issue 2114).

Internal Issues

  * Clarify common draw VUs for attachment read feedback loops (internal
    issue 3439).
  * Add flink:vkCmdCopyQueryPoolResults VU requiring queries to have been
    made available by prior executed commands (internal issue 3451).
  * Relax ptext:*DescriptorSize limits to 256 bytes max in the
    <<limits-required, Required Limits>> table (internal issue 3456).
  * Mention shader objects in definitions of code:SubgroupLocalInvocationId
    and code:SubgroupSize built-ins (internal issue 3459).
  * Use numeric format (e.g. etext:*SFLOAT), numeric type (e.g. "`float`"),
    and SPIR-V type (e.g. code:OpTypeFloat, width, sign) consistently in the
    specification, rather than mixing and matching by accident (internal
    merge request 5627).
  * Add <<spirvenv-module-validation-runtime,
    Runtime SPIR-V Validation>> VUs for Mesh and Task
    code:max*Size using the same wording as for
    code:maxComputeSharedMemorySize (internal merge request 5804).
  * Add missing `const` to
    slink:VkVideoDecodeH265PictureInfoKHR::pname:pStdPictureInfo (internal
    merge request 5859).
  * Convert `scripts/genanchorlinks.py` script into an asciidoctor
    extension.

New Extensions

  * apiext:VK_KHR_ray_tracing_position_fetch
  • Loading branch information
oddhack committed Apr 27, 2023
1 parent 9fff8b2 commit 58e747b
Show file tree
Hide file tree
Showing 30 changed files with 581 additions and 195 deletions.
41 changes: 41 additions & 0 deletions ChangeLog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,47 @@ appears frequently in the change log.

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

Change log for April 27, 2023 Vulkan 1.3.249 spec update:

Github Issues:

* Add a non-normative NOTE on variability in
<<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
implementations, and move the theoretical implementation described in
that section into the NOTE (public issue 1361).
* Fix XML attributes of slink:VkMicromapEXT structure members to allow
`NULL` handles (public issue 2114).

Internal Issues

* Clarify common draw VUs for attachment read feedback loops (internal
issue 3439).
* Add flink:vkCmdCopyQueryPoolResults VU requiring queries to have been
made available by prior executed commands (internal issue 3451).
* Relax ptext:*DescriptorSize limits to 256 bytes max in the
<<limits-required, Required Limits>> table (internal issue 3456).
* Mention shader objects in definitions of code:SubgroupLocalInvocationId
and code:SubgroupSize built-ins (internal issue 3459).
* Use numeric format (e.g. etext:*SFLOAT), numeric type (e.g. "`float`"),
and SPIR-V type (e.g. code:OpTypeFloat, width, sign) consistently in the
specification, rather than mixing and matching by accident (internal
merge request 5627).
* Add <<spirvenv-module-validation-runtime,
Runtime SPIR-V Validation>> VUs for Mesh and Task
code:max*Size using the same wording as for
code:maxComputeSharedMemorySize (internal merge request 5804).
* Add missing `const` to
slink:VkVideoDecodeH265PictureInfoKHR::pname:pStdPictureInfo (internal
merge request 5859).
* Convert `scripts/genanchorlinks.py` script into an asciidoctor
extension.

New Extensions

* apiext:VK_KHR_ray_tracing_position_fetch

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

Change log for April 20, 2023 Vulkan 1.3.248 spec update:

Github Issues:
Expand Down
8 changes: 3 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output

NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 248
PATCHVERSION = 249

ifneq (,$(findstring VK_VERSION_1_3,$(VERSIONS)))
SPECMINOR = 3
Expand Down Expand Up @@ -170,7 +170,8 @@ ADOCOPTS = -d book $(ADOCMISCOPTS) $(ATTRIBOPTS) $(NOTEOPTS) $(VERBOSE) $(AD
ADOCHTMLEXTS = -r $(CURDIR)/config/katex_replace.rb \
-r $(CURDIR)/config/loadable_html.rb \
-r $(CURDIR)/config/vuid-expander.rb \
-r $(CURDIR)/config/rouge-extend-css.rb
-r $(CURDIR)/config/rouge-extend-css.rb \
-r $(CURDIR)/config/genanchorlinks.rb

# ADOCHTMLOPTS relies on the relative runtime path from the output HTML
# file to the katex scripts being set with KATEXDIR. This is overridden
Expand Down Expand Up @@ -242,8 +243,6 @@ GENDEPENDS = $(APIDEPEND) $(VALIDITYDEPEND) $(HOSTSYNCDEPEND) $(METADEPEND)
# All non-format-specific dependencies
COMMONDOCS = $(SPECFILES) $(GENDEPENDS)

# Script to add href to anchors
GENANCHORLINKS = $(SCRIPTS)/genanchorlinks.py
# Script to translate math on build time
TRANSLATEMATH = $(NODEJS) $(SCRIPTS)/translate_math.js $(KATEXSRCDIR)/katex.min.js

Expand Down Expand Up @@ -292,7 +291,6 @@ html: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
$(HTMLDIR)/vkspec.html: KATEXDIR = ../katex
$(HTMLDIR)/vkspec.html: $(SPECSRC) $(COMMONDOCS) $(KATEXINSTDIR)
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(SPECSRC)
$(QUIET)$(PYTHON) $(GENANCHORLINKS) $@ $@
$(QUIET)$(TRANSLATEMATH) $@

diff_html: $(HTMLDIR)/diff.html $(SPECSRC) $(COMMONDOCS)
Expand Down
5 changes: 3 additions & 2 deletions antora/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ spec_pages:
-xrefpath antora \
-pageHeaders antora/pageHeaders-spec.adoc \
-pagemappath $(JSPAGEMAP) \
-filelist $(TEMPFILE) \
./config/attribs.adoc \
./config/copyright-ccby.adoc \
./config/copyright-spec.adoc \
Expand All @@ -56,6 +55,7 @@ setup_proposals:
-root . \
-component $(shell realpath antora/modules/proposals) \
-xrefpath antora \
./images/tile_image.svg \
`find ./proposals -name '[A-Za-z]*.adoc'`

# Files generated by 'setup' target
Expand All @@ -67,7 +67,8 @@ ANTORA_GENERATED = \
antora/modules/ROOT/partials \
antora/modules/proposals/pages/proposals \
antora/modules/proposals/partials \
$(JSXEFMAP) \
antora/modules/proposals/images \
$(JSXREFMAP) \
$(PYXREFMAP)

clean:
Expand Down
61 changes: 61 additions & 0 deletions appendices/VK_KHR_ray_tracing_position_fetch.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright 2021-2023 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_ray_tracing_position_fetch.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
2023-02-17
*Interactions and External Dependencies*::
- This extension requires
{spirv}/KHR/SPV_KHR_ray_tracing_position_fetch.html[`SPV_KHR_ray_tracing_position_fetch`]
- This extension provides API support for
{GLSLregistry}/ext/GLSL_EXT_ray_tracing_position_fetch.txt[`GLSL_EXT_ray_tracing_position_fetch`]
- Interacts with `apiext:VK_KHR_ray_tracing_pipeline`
- Interacts with `apiext:VK_KHR_ray_query`
*Contributors*::
- Eric Werness, NVIDIA
- Stu Smith, AMD
- Yuriy O'Donnell, Epic Games
- Ralph Potter, Samsung
- Joshua Barczak, Intel
- Lionel Landwerlin, Intel
- Andrew Garrard, Imagination Technologies
- Alex Bourd, Qualcomm
- Yunpeng Zhu, Huawei Technologies
- Marius Bjorge, Arm
- Daniel Koch, NVIDIA

=== Description

`VK_KHR_ray_tracing_position_fetch` adds the ability to fetch the vertex
positions in the shader from a hit triangle as stored in the acceleration
structure.

An application adds
ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR to the
acceleration structure at build time.
Then, if the hit is a triangle geometry, the shader (any-hit or closest hit
for ray pipelines or using ray query) can: fetch the three, three-component
vertex positions in object space, of the triangle which was hit.

include::{generated}/interfaces/VK_KHR_ray_tracing_position_fetch.adoc[]

=== New Built-In Variables

* <<interfaces-builtin-variables-hittrianglevertexpositions,code:HitTriangleVertexPositionsKHR>>

=== New SPIR-V Capabilities

* <<spirvenv-capabilities-table-RayTracingPositionFetchKHR,RayTracingPositionFetchKHR>>

=== Issues

None Yet!

=== Version History

* Revision 1, 2023-02-17 (Eric Werness)
** internal revisions
6 changes: 3 additions & 3 deletions appendices/VK_QCOM_multiview_per_view_viewports.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ indexing as introduced with `apiext:VK_EXT_shader_viewport_index_layer`.

This extension adds a new way to control ViewportIndex with multiview.
When the <<features-multiview-per-view-viewports,
multiviewPerViewViewports>> feature is enabled and if the last
pname:multiviewPerViewViewports>> feature is enabled and if the last
pre-rasterization shader entry point's interface does not use the
code:ViewportIndex built-in decoration, then each view of a multiview
renderpass instance will use a viewport and scissor index equal to the
Expand All @@ -37,8 +37,8 @@ include::{generated}/interfaces/VK_QCOM_multiview_per_view_viewports.adoc[]
=== Issues

1) Is is possible to enable/disable the
<<features-multiview-per-view-viewports, multiviewPerViewViewports>> feature
for individual renderpass instances?
<<features-multiview-per-view-viewports, pname:multiviewPerViewViewports>>
feature for individual renderpass instances?

*RESOLVED*: No, when the multiviewPerViewViewports feature is enabled during
vkCreateDevice, then all created renderpass instances (including dynamic
Expand Down
81 changes: 72 additions & 9 deletions appendices/spirvenv.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,9 @@ or knowledge of runtime information, such as enabled features.
code:OpTypeSampledImage must: have a code:OpTypeImage with a "`Sampled`"
operand of 1 (sampled image)
* [[VUID-{refpage}-Image-04965]]
The converted bit width, signedness, and numeric type of the code:Image
code:Format operand of an code:OpTypeImage must: match the code:Sampled
code:Type, as defined in <<spirvenv-format-type-matching>>
The <<spirv-type,SPIR-V Type>> of the code:Image code:Format operand of
an code:OpTypeImage must: match the code:Sampled code:Type, as defined
in <<spirvenv-format-type-matching>>
* [[VUID-{refpage}-OpImageTexelPointer-04658]]
If an code:OpImageTexelPointer is used in an atomic operation, the image
type of the code:image parameter to code:OpImageTexelPointer must: have
Expand Down Expand Up @@ -1194,6 +1194,45 @@ ifdef::VK_EXT_mesh_shader[]
the "`Group Count`" operands of code:OpEmitMeshTasksEXT must: be less
than or equal to
slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupTotalCount
* [[VUID-{refpage}-maxMeshSharedMemorySize-08754]]
The sum of size in bytes for variables and <<workgroup-padding,
padding>> in the code:Workgroup {StorageClass} in the code:MeshEXT
{ExecutionModel} must: be less than or equal to
<<limits-maxMeshSharedMemorySize, pname:maxMeshSharedMemorySize>>
* [[VUID-{refpage}-maxMeshPayloadAndSharedMemorySize-08755]]
The sum of size in bytes for variables and <<workgroup-padding,
padding>> in the code:TaskPayloadWorkgroupEXT or code:Workgroup
{StorageClass} in the code:MeshEXT {ExecutionModel} must: be less than
or equal to <<limits-maxMeshPayloadAndSharedMemorySize,
pname:maxMeshPayloadAndSharedMemorySize>>
* [[VUID-{refpage}-maxMeshOutputMemorySize-08756]]
The sum of size in bytes for variables in the code:Output {StorageClass}
in the code:MeshEXT {ExecutionModel} must: be less than or equal to
<<limits-maxMeshOutputMemorySize, pname:maxMeshOutputMemorySize>>
according to the formula in <<mesh-output, Mesh Shader Output>>
* [[VUID-{refpage}-maxMeshPayloadAndOutputMemorySize-08757]]
The sum of size in bytes for variables and in the
code:TaskPayloadWorkgroupEXT or code:Output {StorageClass} in the
code:MeshEXT {ExecutionModel} must: be less than or equal to
<<limits-maxMeshPayloadAndOutputMemorySize,
pname:maxMeshPayloadAndOutputMemorySize>> according to the formula in
<<mesh-output, Mesh Shader Output>>
* [[VUID-{refpage}-maxTaskPayloadSize-08758]]
The sum of size in bytes for variables and in the
code:TaskPayloadWorkgroupEXT {StorageClass} in the code:TaskEXT
{ExecutionModel} must: be less than or equal to
<<limits-maxTaskPayloadSize, pname:maxTaskPayloadSize>>
* [[VUID-{refpage}-maxTaskSharedMemorySize-08759]]
The sum of size in bytes for variables and <<workgroup-padding,
padding>> in the code:Workgroup {StorageClass} in the code:TaskEXT
{ExecutionModel} must: be less than or equal to
<<limits-maxTaskSharedMemorySize, pname:maxTaskSharedMemorySize>>
* [[VUID-{refpage}-maxTaskPayloadAndSharedMemorySize-08760]]
The sum of size in bytes for variables and <<workgroup-padding,
padding>> in the code:TaskPayloadWorkgroupEXT or code:Workgroup
{StorageClass} in the code:TaskEXT {ExecutionModel} must: be less than
or equal to <<limits-maxTaskPayloadAndSharedMemorySize,
pname:maxTaskPayloadAndSharedMemorySize>>
endif::VK_EXT_mesh_shader[]
ifdef::VK_KHR_portability_subset[]
* [[VUID-{refpage}-shaderSampleRateInterpolationFunctions-06325]]
Expand Down Expand Up @@ -1430,6 +1469,13 @@ ifdef::VK_NV_ray_tracing_motion_blur[]
code:Acceleration code:Structure must: not be built with
ename:VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV in pname:flags
endif::VK_NV_ray_tracing_motion_blur[]
ifdef::VK_KHR_ray_tracing_position_fetch[]
* [[VUID-{refpage}-flags-08761]]
For code:OpRayQueryGetIntersectionTriangleVertexPositionsKHR
instructions, code:Acceleration code:Structure must: have been built
with ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR in
pname:flags
endif::VK_KHR_ray_tracing_position_fetch[]
endif::VK_KHR_ray_query[]
ifdef::VK_KHR_ray_tracing_pipeline[]
* [[VUID-{refpage}-OpTraceRayKHR-06355]]
Expand Down Expand Up @@ -1616,11 +1662,10 @@ endif::VK_VERSION_1_3,VK_KHR_maintenance4[]
code:OpEntryPoint of two shader stages must: have matching decorations
as defined in <<interfaces-iointerfaces-matching,interface matching>>
* [[VUID-{refpage}-Workgroup-06530]]
The sum of size in bytes for variables and
<<limits-maxComputeSharedMemorySize, padding>> in the code:Workgroup
{StorageClass} in the code:GLCompute {ExecutionModel} must: be less than
or equal to <<limits-maxComputeSharedMemorySize,
pname:maxComputeSharedMemorySize>>
The sum of size in bytes for variables and <<workgroup-padding,
padding>> in the code:Workgroup {StorageClass} in the code:GLCompute
{ExecutionModel} must: be less than or equal to
<<limits-maxComputeSharedMemorySize, pname:maxComputeSharedMemorySize>>
ifdef::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
* [[VUID-{refpage}-shaderZeroInitializeWorkgroupMemory-06372]]
If <<features-shaderZeroInitializeWorkgroupMemory,
Expand Down Expand Up @@ -2283,7 +2328,7 @@ in the _Signedness_ column (where applicable).

[options="autowidth"]
|===
| Image Format | Type | Bit Width | Signedness
| Image Format | Type-Declaration instructions | Bit Width | Signedness

| code:Unknown | Any | Any | Any
| code:Rgba32f .20+| code:OpTypeFloat .20+| 32 .20+| N/A
Expand Down Expand Up @@ -2329,6 +2374,9 @@ in the _Signedness_ column (where applicable).
| code:R64ui | 0
|===

[[spirv-type]]
The _SPIR-V Type_ is defined by an instruction in SPIR-V, declared with the
Type-Declaration Instruction, Bit Width, and Signedness from above.

[[spirvenv-image-formats]]
== Compatibility Between SPIR-V Image Formats And Vulkan Formats
Expand All @@ -2342,3 +2390,18 @@ values as defined below:
|SPIR-V Image Format |Compatible Vulkan Format
include::{generated}/formats/spirvimageformat.adoc[]
|====


ifdef::VK_KHR_ray_query+VK_KHR_ray_tracing_position_fetch[]
// TODO: add more Ray Query instructions here and move second ifdef down
[[spirenv-ray-query-precision-operation]]
== Ray Query Precision and Operation

The values returned by
code:OpRayQueryGetIntersectionTriangleVertexPositionsKHR are transformed by
the geometry transform, which is performed at standard
<<fundamentals-floatingpoint, floating point>> precision, but without a
specifically defined order of floating point operations to perform the
matrix multiplication.

endif::VK_KHR_ray_query+VK_KHR_ray_tracing_position_fetch[]
8 changes: 4 additions & 4 deletions chapters/clears.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -442,21 +442,21 @@ The sname:VkClearColorValue structure is defined as:
include::{generated}/api/structs/VkClearColorValue.adoc[]

* pname:float32 are the color clear values when the format of the image or
attachment is one of the formats in the <<formats-numericformat>> table
other than signed integer (etext:SINT) or unsigned integer (etext:UINT).
attachment is one of the <<formats-numericformat, numeric formats>> with
a numeric type that is floating-point.
Floating point values are automatically converted to the format of the
image, with the clear value being treated as linear if the image is
sRGB.
* pname:int32 are the color clear values when the format of the image or
attachment is signed integer (etext:SINT).
attachment has a numeric type that is signed integer (etext:SINT).
Signed integer values are converted to the format of the image by
casting to the smaller type (with negative 32-bit values mapping to
negative values in the smaller type).
If the integer clear value is not representable in the target type (e.g.
would overflow in conversion to that type), the clear value is
undefined:.
* pname:uint32 are the color clear values when the format of the image or
attachment is unsigned integer (etext:UINT).
attachment has a numeric type that is unsigned integer (etext:UINT).
Unsigned integer values are converted to the format of the image by
casting to the integer type with fewer bits.

Expand Down
Loading

0 comments on commit 58e747b

Please sign in to comment.