Skip to content

Commit 60a4ad1

Browse files
committed
Change log for November 28, 2025 Vulkan 1.4.335 spec update:
Github Issues * Apply -removeExtensions genvk.py flag to platform headers (public PR 2616). Internal Issues * Update tessellation VUs for shader objects to constrain patch size, subdivision, spacing / orientation, and point mode as to which shader stages they can appear in, and enforce matching rules across stages (internal issues 3458, 3747). * Evaluate complex dependencies in XML at syncgenerator runtime, instead of relying on asciidoc which cannot evaluate all such expressions properly. This restores several tokens in the generated tables related to VK_KHR_ray_tracing_pipelin (internal issue 4133). * Merge remaining FUCHSIA, GGP, and [GOOGLE] vendor extension markup in separate files into the chapters they are included from (internal issue 4516). * Add missing VU for VK_KHR_copy_memory_indirect commands requiring source and destination memory be from ranges allocated from buffers and images with the correct USAGE flags set (internal issue 4546). * Mark vkCmdDebug*EXT in XML as state, not action commands (internal issue 4558). * Clarify address mode parameters and type ranges for VkSamplerCreateInfo and VkSamplerAddressMode (internal issue 4560). * Require support for at least one queue family supporting graphics, compute, or video operations in VkQueueFlagBits (internal issue 4566). * Add USAGE flag VUs for vkGetDescriptorEXT (internal MR 7801). * Add standalone SPIR-V device Scope VU for OpTypeCooperativeMatrixKHR (internal MR 7827). * Merge orphaned VK_EXT_metal_surface include into WSI chapter (internal MR 7854). * Add VkDescriptorSetLayoutBinding VU restricting YCbCr samplers (internal MR 7858). * Fix / split VUs for VkClusterAccelerationStructureCommandsInfoNV::dstAddressesArray (internal MR 7861). New Extensions * VK_EXT_present_timing
1 parent bb1314e commit 60a4ad1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1792
-1645
lines changed

ChangeLog.adoc

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,52 @@ appears frequently in the change log.
1414

1515
'''
1616

17+
Change log for November 28, 2025 Vulkan 1.4.335 spec update:
18+
19+
Github Issues
20+
21+
* Apply -removeExtensions genvk.py flag to platform headers (public PR
22+
2616).
23+
24+
Internal Issues
25+
26+
* Update tessellation VUs for shader objects to constrain patch size,
27+
subdivision, spacing / orientation, and point mode as to which shader
28+
stages they can appear in, and enforce matching rules across stages
29+
(internal issues 3458, 3747).
30+
* Evaluate complex dependencies in XML at syncgenerator runtime, instead
31+
of relying on asciidoc which cannot evaluate all such expressions
32+
properly. This restores several tokens in the generated tables related
33+
to VK_KHR_ray_tracing_pipelin (internal issue 4133).
34+
* Merge remaining FUCHSIA, GGP, and [GOOGLE] vendor extension markup in
35+
separate files into the chapters they are included from (internal issue
36+
4516).
37+
* Add missing VU for VK_KHR_copy_memory_indirect commands requiring source
38+
and destination memory be from ranges allocated from buffers and images
39+
with the correct USAGE flags set (internal issue 4546).
40+
* Mark vkCmdDebug*EXT in XML as state, not action commands (internal issue
41+
4558).
42+
* Clarify address mode parameters and type ranges for VkSamplerCreateInfo
43+
and VkSamplerAddressMode (internal issue 4560).
44+
* Require support for at least one queue family supporting graphics,
45+
compute, or video operations in VkQueueFlagBits (internal issue 4566).
46+
* Add USAGE flag VUs for vkGetDescriptorEXT (internal MR 7801).
47+
* Add standalone SPIR-V device Scope VU for OpTypeCooperativeMatrixKHR
48+
(internal MR 7827).
49+
* Merge orphaned VK_EXT_metal_surface include into WSI chapter (internal
50+
MR 7854).
51+
* Add VkDescriptorSetLayoutBinding VU restricting YCbCr samplers (internal
52+
MR 7858).
53+
* Fix / split VUs for
54+
VkClusterAccelerationStructureCommandsInfoNV::dstAddressesArray
55+
(internal MR 7861).
56+
57+
New Extensions
58+
59+
* VK_EXT_present_timing
60+
61+
'''
62+
1763
Change log for November 21, 2025 Vulkan 1.4.334 spec update:
1864

1965
Github Issues

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ VERBOSE =
151151
# ADOCOPTS options for asciidoc->HTML5 output
152152

153153
NOTEOPTS = -a editing-notes -a implementation-guide
154-
PATCHVERSION = 334
154+
PATCHVERSION = 335
155155
BASEOPTS =
156156

157157
ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS)))

appendices/VK_EXT_present_timing.adoc

Lines changed: 76 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -60,48 +60,47 @@ whether FRR vs. VRR, etc.
6060
*PROPOSED*: the query returns two values: 1) a refresh-cycle duration
6161
(pname:refreshDuration), and 2) an indication whether the timing is
6262
currently fixed (FRR) or variable (VRR).
63-
If pname:refreshDuration is zero, the platform cannot supply these
64-
values until after at least one flink:vkQueuePresentKHR has been done,
65-
from this time (e.g. if flink:vkQueuePresentKHR has been previously
66-
called for this swapchain, at least one additional call must be made).
63+
If pname:refreshDuration is zero, the platform cannot supply these values
64+
until after at least one flink:vkQueuePresentKHR has been done, from this
65+
time (e.g. if flink:vkQueuePresentKHR has been previously called for this
66+
swapchain, at least one additional call must be made).
6767
After calling flink:vkQueuePresentKHR, the query can be repeated until
68-
pname:refreshDuration is non-zero, at which point the FRR vs. VRR
69-
indication will also be valid.
68+
pname:refreshDuration is non-zero, at which point the FRR vs. VRR indication
69+
will also be valid.
7070

71-
If the presentation engine's pname:refreshDuration is a fixed value,
72-
the application's image present duration (IPD) should be a multiple of
71+
If the presentation engine's pname:refreshDuration is a fixed value, the
72+
application's image present duration (IPD) should be a multiple of
7373
pname:refreshDuration.
7474
That is, the quanta for changing the IPD is pname:refreshDuration.
75-
For example, if pname:refreshDuration is 16.67ms, the IPD can be
76-
16.67ms, 33.33ms, 50.0ms, etc.
75+
For example, if pname:refreshDuration is 16.67ms, the IPD can be 16.67ms,
76+
33.33ms, 50.0ms, etc.
7777

7878
If the presentation engine's pname:refreshDuration is variable,
79-
pname:refreshDuration is the minimum value of the application's IPD, and
80-
the IPD can be larger by any quanta that is meaningful to the application.
81-
For example, if the pname:refreshDuration is 10ms (i.e. the maximum
82-
refresh rate is 100Hz), the application can choose an IPD of 11ms,
83-
13.33ms, 13.5ms, or 66.0ms; any value greater than or equal to 10ms is
84-
valid.
85-
There may be negative consequences for choosing an IPD that is too
86-
high, as the presentation engine may actually have a practical maximum
87-
pname:refreshDuration, where it needs to display the previous image
88-
again, and during this time the presentation engine might delay
89-
displaying a newly-presented image.
90-
91-
FRR displays on at least one platform (Wayland) are not necessarily
92-
fixed; but can change over time.
93-
For example, if a full-screen video player application is visible, the display
94-
may operate at a 24Hz refresh cycle; and then later switch to 60Hz when
95-
multiple windows are visible.
79+
pname:refreshDuration is the minimum value of the application's IPD, and the
80+
IPD can be larger by any quanta that is meaningful to the application.
81+
For example, if the pname:refreshDuration is 10ms (i.e. the maximum refresh
82+
rate is 100Hz), the application can choose an IPD of 11ms, 13.33ms, 13.5ms,
83+
or 66.0ms; any value greater than or equal to 10ms is valid.
84+
There may be negative consequences for choosing an IPD that is too high, as
85+
the presentation engine may actually have a practical maximum
86+
pname:refreshDuration, where it needs to display the previous image again,
87+
and during this time the presentation engine might delay displaying a
88+
newly-presented image.
89+
90+
FRR displays on at least one platform (Wayland) are not necessarily fixed;
91+
but can change over time.
92+
For example, if a full-screen video player application is visible, the
93+
display may operate at a 24Hz refresh cycle; and then later switch to 60Hz
94+
when multiple windows are visible.
9695

9796
VRR displays on some platforms can also be seen as having different
9897
characteristics over time.
99-
For example, if an application's window is full-screen-exclusive (i.e. no other
100-
window or window system component is visible), the display can look like a VRR
101-
display (however that is defined).
98+
For example, if an application's window is full-screen-exclusive (i.e. no
99+
other window or window system component is visible), the display can look
100+
like a VRR display (however that is defined).
102101
If the application's window is not full-screen-exclusive (e.g. a normal
103-
multi-window case), the display can look like an FRR display (i.e. because the
104-
compositor is trying to treat all windows in a consistent manner).
102+
multi-window case), the display can look like an FRR display (i.e. because
103+
the compositor is trying to treat all windows in a consistent manner).
105104
A different issue will deal with how the timing characteristics can change
106105
over time.
107106

@@ -110,45 +109,45 @@ over time.
110109

111110
*PROPOSED*: return only the minimum value of refreshDuration for a VRR.
112111

113-
VRR displays have a minimum and maximum refresh rate, and therefore a minimum
114-
and maximum refreshDuration.
112+
VRR displays have a minimum and maximum refresh rate, and therefore a
113+
minimum and maximum refreshDuration.
115114
It has been asserted that the display effectively does not have a minimum
116115
refresh rate.
117116
That is because if an application does not present soon enough, the display
118117
hardware will automatically re-display the previous image.
119-
However, when the display does that, an application cannot present a new image
120-
for a certain period of time.
118+
However, when the display does that, an application cannot present a new
119+
image for a certain period of time.
121120
It is unclear about whether that period is large enough to cause visual
122121
artifacts.
123122

124123

125124
3) How to deal with changes in timing properties?
126125

127-
*RESOLVED*: The slink:VkPastPresentationTimingPropertiesEXT structure
128-
that is returned by flink:vkGetPastPresentationTimingEXT contains
129-
pname:timeDomainsCounter, which is incremented if the time
130-
domain enabled for the swapchain is not currently available.
126+
*RESOLVED*: The slink:VkPastPresentationTimingPropertiesEXT structure that
127+
is returned by flink:vkGetPastPresentationTimingEXT contains
128+
pname:timeDomainsCounter, which is incremented if the time domain enabled
129+
for the swapchain is not currently available.
131130

132131
An example of why display timing properties can change is if a surface
133-
changes from being a window that’s a subset of the display size, to
134-
becoming full-screen-exclusive.
135-
While the surface was a subset of the display, a compositor might
136-
enforce fixed timings on the surface (e.g. FRR of 60Hz), where the
137-
presentation engine might be free to allow VRR behavior of a
138-
full-screen-exclusive surface.
132+
changes from being a window that’s a subset of the display size, to becoming
133+
full-screen-exclusive.
134+
While the surface was a subset of the display, a compositor might enforce
135+
fixed timings on the surface (e.g. FRR of 60Hz), where the presentation
136+
engine might be free to allow VRR behavior of a full-screen-exclusive
137+
surface.
139138

140-
It is possible that a full-screen-exclusive window can become
141-
temporarily obscured (e.g. when a short-term dialog pops up).
142-
In this case, the surface might use FRR timings while the dialog is
143-
visible and VRR otherwise.
139+
It is possible that a full-screen-exclusive window can become temporarily
140+
obscured (e.g. when a short-term dialog pops up).
141+
In this case, the surface might use FRR timings while the dialog is visible
142+
and VRR otherwise.
144143

145144

146-
4) One Query for all Timing info vs. an initial query to determine FRR vs. VRR,
147-
and then FRR-specific vs VRR-specific queries?
145+
4) One Query for all Timing info vs. an initial query to determine FRR vs.
146+
VRR, and then FRR-specific vs VRR-specific queries?
148147

149-
*RESOLVED*: Have one query, as described in issue 1, that can be
150-
called whenever the application needs to obtain the timing properties
151-
of the surface.
148+
*RESOLVED*: Have one query, as described in issue 1, that can be called
149+
whenever the application needs to obtain the timing properties of the
150+
surface.
152151

153152

154153
5) Query to determine time domain?
@@ -164,51 +163,51 @@ Other extensions can add other platform-specific time domains.
164163
domain; and do allow the special value of zero for targetPresentTime,
165164
meaning that there is no target.
166165

167-
On some platforms, there is no way to determine the current time, nor
168-
to determine surface timing properties until after at least one image
169-
has been presented.
166+
On some platforms, there is no way to determine the current time, nor to
167+
determine surface timing properties until after at least one image has been
168+
presented.
170169

171-
In such cases, the special value of zero allows the application to
172-
indicate that timing feedback is desired, but that no
173-
targetPresentTime is requested.
170+
In such cases, the special value of zero allows the application to indicate
171+
that timing feedback is desired, but that no targetPresentTime is requested.
174172
Later, once the application has obtained feedback, it can specify
175173
targetPresentTime by using the result's actualPresentTime.
176174

177175

178-
7) How long before an application’s request for new image duration is honored?
176+
7) How long before an application’s request for new image duration is
177+
honored?
179178

180-
*UNRESOLVED*: Apparently, changes to some vendors' display hardware settings do
181-
not take effect immediately.
182-
It is not clear what settings, and therefore, it is not clear how to
183-
address this issue.
179+
*UNRESOLVED*: Apparently, changes to some vendors' display hardware settings
180+
do not take effect immediately.
181+
It is not clear what settings, and therefore, it is not clear how to address
182+
this issue.
184183

185184

186185
8) Do we have a query for the anticipated latency from present to feedback?
187186

188187
*RESOLVED*: Do not provide a query for the feedback latency.
189188

190189
There is some amount of latency from when an application calls
191-
vkQueuePresentKHR to when the image is displayed to the user, to when feedback
192-
is available to the application on when the image was actually displayed to the
193-
user.
190+
vkQueuePresentKHR to when the image is displayed to the user, to when
191+
feedback is available to the application on when the image was actually
192+
displayed to the user.
194193
The first time (from the call till the image is presented) generally doesn’t
195194
matter, because the application will likely be providing a targetPresentTime
196195
(i.e. the application may have some indication for how long this will be).
197-
However, the latency between targetPresentTime until feedback is available may
198-
be much longer.
199-
For example, on Android on the 1st-generation Pixel phone (60Hz FRR display),
200-
the latency was approximately 5 refresh cycles (83.33ms).
201-
For higher-frequency displays, the latency may have a larger number of refresh
202-
cycles.
196+
However, the latency between targetPresentTime until feedback is available
197+
may be much longer.
198+
For example, on Android on the 1st-generation Pixel phone (60Hz FRR
199+
display), the latency was approximately 5 refresh cycles (83.33ms).
200+
For higher-frequency displays, the latency may have a larger number of
201+
refresh cycles.
203202

204203

205204
9) Do we have a query(s) about the number of VkPastPresentationTimingEXT
206205
structs to keep?
207206

208207
*RESOLVED*: Do not provide a query for the number of results the swapchain
209208
is allowed to store before querying them with
210-
vkGetPastPresentationTimingEXT. Let the application specify that value with
211-
a dedicated API.
209+
vkGetPastPresentationTimingEXT.
210+
Let the application specify that value with a dedicated API.
212211

213212

214213
10) How is the SWAPCHAIN_LOCAL and STAGE_LOCAL time domain used with the

appendices/glossary.adoc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -931,15 +931,16 @@ Image::
931931

932932
ifdef::VK_EXT_present_timing,VK_GOOGLE_display_timing[]
933933
Image Present Duration::
934-
The amount of time the application intends for each
935-
newly-presented image to be visible to the user.
934+
The amount of time the application intends for each newly-presented
935+
image to be visible to the user.
936936
This value should: be a multiple of the refresh cycle duration.
937937

938938
Image Present Rate::
939939
The number of newly-presented images the application intends to present
940-
each second (a.k.a. frame rate).
941-
On fixed refresh rate displays, this value should: be a multiple of
942-
the refresh rate.
940+
each second (a.k.a.
941+
frame rate).
942+
On fixed refresh rate displays, this value should: be a multiple of the
943+
refresh rate.
943944
endif::VK_EXT_present_timing,VK_GOOGLE_display_timing[]
944945

945946
Image Subresource::
@@ -1785,7 +1786,8 @@ endif::VK_KHR_video_queue[]
17851786

17861787
ifdef::VK_EXT_present_timing,VK_GOOGLE_display_timing[]
17871788
Refresh Cycle::
1788-
The periodic process for updating the contents of the Presentation Engine's display.
1789+
The periodic process for updating the contents of the Presentation
1790+
Engine's display.
17891791

17901792
Refresh Cycle Duration::
17911793
The amount of time from the start of one refresh cycle to the next.

appendices/spirvenv.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ or knowledge of runtime information, such as enabled features.
188188
* [[VUID-StandaloneSpirv-None-04636]]
189189
code:Scope for execution must: be limited to code:Workgroup or
190190
code:Subgroup
191+
* [[VUID-{refpage}-Scope-12243]]
192+
The code:Scope operand of code:OpTypeCooperativeMatrixKHR must: be
193+
limited to code:Workgroup or code:Subgroup
191194
* [[VUID-StandaloneSpirv-None-04637]]
192195
If the code:Scope for execution is code:Workgroup, then it must: only be
193196
used in the task, mesh, tessellation control, or compute
@@ -758,7 +761,7 @@ or knowledge of runtime information, such as enabled features.
758761
code:OpSetMeshOutputsEXT must: be called before any outputs are written
759762
* [[VUID-StandaloneSpirv-MeshEXT-07107]]
760763
In mesh shaders using the code:MeshEXT {ExecutionModel} all variables
761-
declared as output must: not be read from
764+
declared in the code:Output {StorageClass} must: not be read
762765
* [[VUID-StandaloneSpirv-MeshEXT-07108]]
763766
In mesh shaders using the code:MeshEXT {ExecutionModel} for
764767
code:OpSetMeshOutputsEXT instructions, the "`Vertex Count`" and

chapters/VK_EXT_metal_surface/platformQuerySupport_metal.adoc

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)