Skip to content

Commit ccac48a

Browse files
committed
Change log for February 7, 2025 Vulkan 1.4.308 spec update:
Github Issues * Correct typos (public PRs 2485, 2489, 2493, 2494). Internal Issues * Better specify <<interfaces-iointerfaces-locations, Location and Component Assignment>> (internal issues 1954, 2758, 3445). * Add missing conditional markup for the VK_KHR_video_encode_quantization_map extension (internal MR 7148). * Clarify wording around <<ray-intersection-confirmation, AABB primitive bounds>> (internal issue 4134). * Add missing common draw VU for VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT (internal issue 4150). * Fix grammar from the feature requirements generator script when one of exactly two features is required (internal issue 4170). * Add missing `returnedonly` to XML for VkPhysicalDeviceSchedulingControlsPropertiesARM and VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV (internal MRs 7156 and 7157). * Add `structextends` to VkAccelerationStructureGeometryLinearSweptSpheresDataNV and VkAccelerationStructureGeometrySpheresDataNV (internal MR 7163). * Fix VkCooperativeVectorPropertiesNV inputType / inputInterpretation mixup for packed types (internal MR 7172). New Extensions * VK_NV_present_metering
1 parent a370995 commit ccac48a

30 files changed

+314
-147
lines changed

ChangeLog.adoc

+35
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,41 @@ appears frequently in the change log.
1414

1515
'''
1616

17+
Change log for February 7, 2025 Vulkan 1.4.308 spec update:
18+
19+
Github Issues
20+
21+
* Correct typos (public PRs 2485, 2489, 2493, 2494).
22+
23+
Internal Issues
24+
25+
* Better specify <<interfaces-iointerfaces-locations, Location and
26+
Component Assignment>> (internal issues 1954, 2758, 3445).
27+
* Add missing conditional markup for the
28+
VK_KHR_video_encode_quantization_map extension (internal MR 7148).
29+
* Clarify wording around <<ray-intersection-confirmation, AABB primitive
30+
bounds>> (internal issue 4134).
31+
* Add missing common draw VU for
32+
VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT (internal issue
33+
4150).
34+
* Fix grammar from the feature requirements generator script when one of
35+
exactly two features is required (internal issue 4170).
36+
* Add missing `returnedonly` to XML for
37+
VkPhysicalDeviceSchedulingControlsPropertiesARM and
38+
VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV (internal MRs 7156
39+
and 7157).
40+
* Add `structextends` to
41+
VkAccelerationStructureGeometryLinearSweptSpheresDataNV and
42+
VkAccelerationStructureGeometrySpheresDataNV (internal MR 7163).
43+
* Fix VkCooperativeVectorPropertiesNV inputType / inputInterpretation
44+
mixup for packed types (internal MR 7172).
45+
46+
New Extensions
47+
48+
* VK_NV_present_metering
49+
50+
'''
51+
1752
Change log for January 30, 2025 Vulkan 1.4.307 spec update:
1853

1954
Internal Issues

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ VERBOSE =
148148
# ADOCOPTS options for asciidoc->HTML5 output
149149

150150
NOTEOPTS = -a editing-notes -a implementation-guide
151-
PATCHVERSION = 307
151+
PATCHVERSION = 308
152152
BASEOPTS =
153153

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

appendices/VK_HUAWEI_cluster_culling_shader.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ A set of new built-in output variables are used to express a visible
4040
cluster, including per-cluster shading rate.
4141
In addition, a new built-in function is used to emit these variables from
4242
CCS to the IA stage.
43-
The IA stage can use these variables to fetch vertices of a visible
44-
cluster and drive vertex shaders to shading these vertices.
43+
The IA stage can use these variables to fetch vertices of a visible cluster
44+
and drive vertex shaders to shading these vertices.
4545

4646
Note that CCS do not work with geometry or tessellation shaders, but both IA
4747
and vertex shaders are preserved.
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright 2019-2025 The Khronos Group Inc.
2+
//
3+
// SPDX-License-Identifier: CC-BY-4.0
4+
5+
include::{generated}/meta/{refprefix}VK_NV_present_metering.adoc[]
6+
7+
=== Other Extension Metadata
8+
9+
*Last Modified Date*::
10+
2025-01-08
11+
12+
*Provisional*::
13+
*This extension is _provisional_ and should: not be used in production
14+
applications.
15+
The functionality defined by this extension may: change in ways that break
16+
backwards compatibility between revisions, and before the final release of
17+
the non-provisional version of this extension.
18+
19+
*Contributors*::
20+
- Charles Hansen, NVIDIA
21+
- Lionel Duc, NVIDIA
22+
23+
=== Description
24+
25+
This extension is used to evenly meter presents.
26+
27+
include::{generated}/interfaces/VK_NV_present_metering.adoc[]
28+
=== Issues
29+
30+
=== Version History
31+
32+
* Revision 1, 2025-01-08 (Charles Hansen)
33+
** Internal revisions

appendices/spirvenv.adoc

+32-3
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,41 @@ or knowledge of runtime information, such as enabled features.
382382
* [[VUID-{refpage}-Component-04923]]
383383
The code:Component decorations value must: not be 1 or 3 for scalar or
384384
two-component 64-bit data types
385-
* [[VUID-{refpage}-Component-04924]]
386-
The code:Component decorations must: not be used with any type that is
387-
not a scalar or vector, or an array of such a type
388385
* [[VUID-{refpage}-Component-07703]]
389386
The code:Component decorations must: not be used for a 64-bit vector
390387
type with more than two components
388+
* [[VUID-{refpage}-Component-10583]]
389+
The code:Component decorations must: not be used with any type that is
390+
not a scalar, vector, array of scalars or vectors, or an array of arrays
391+
of scalars or vectors
392+
* [[VUID-{refpage}-Execution-10584]]
393+
If the code:Execution code:Model of an entry point is not
394+
code:TessellationControl or code:Geometry, its interface definition
395+
must: not include any variables in the code:Input storage class
396+
decorated with code:Component that are arrays of arrays of scalars or
397+
vectors
398+
* [[VUID-{refpage}-Execution-10585]]
399+
If the code:Execution code:Model of an entry point is not code:MeshNV,
400+
its interface definition must: not include any variables in the
401+
code:Output storage class decorated with code:Component that are arrays
402+
of arrays of scalars or vectors
403+
* [[VUID-{refpage}-Output-10586]]
404+
Variables in the code:Output storage class in the code:Vertex,
405+
code:TessellationControl, code:TessellationEvaluation, or code:Geometry
406+
execution model must: not have overlapping code:Component and
407+
code:Location decorations as defined by
408+
<<interfaces-iointerfaces-locations,Location and Component Assignment>>
409+
* [[VUID-{refpage}-Output-10587]]
410+
Variables in the code:Output storage class in the code:Fragment
411+
execution model must: not have both identical code:Index decorations and
412+
overlapping code:Component and code:Location decorations as defined by
413+
<<interfaces-iointerfaces-locations,Location and Component Assignment>>
414+
* [[VUID-{refpage}-Input-10588]]
415+
Variables in the code:Input storage class in the
416+
code:TessellationControl, code:TessellationEvaluation, code:Geometry, or
417+
code:Fragment execution model must: not have overlapping code:Component
418+
and code:Location decorations as defined by
419+
<<interfaces-iointerfaces-locations,Location and Component Assignment>>
391420
* [[VUID-{refpage}-Input-09557]]
392421
The pointers of any code:Input or code:Output
393422
<<interfaces-iointerfaces-user,Interface user-defined variables>> must:

chapters/VK_EXT_directfb_surface/platformCreateSurface_directfb.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ To create a sname:VkSurfaceKHR object for a DirectFB surface, call:
1414
include::{generated}/api/protos/vkCreateDirectFBSurfaceEXT.adoc[]
1515

1616
* pname:instance is the instance to associate the surface with.
17-
* pname:pCreateInfo is a pointer to a sname:VkDirectFBSurfaceCreateInfoEXT
17+
* pname:pCreateInfo is a pointer to a slink:VkDirectFBSurfaceCreateInfoEXT
1818
structure containing parameters affecting the creation of the surface
1919
object.
2020
* pname:pAllocator is the allocator used for host memory allocated for the

chapters/VK_EXT_headless_surface/headless.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ include::{generated}/api/protos/vkCreateHeadlessSurfaceEXT.adoc[]
3737
* pname:pAllocator is the allocator used for host memory allocated for the
3838
surface object when there is no more specific allocator available (see
3939
<<memory-allocation,Memory Allocation>>).
40-
* pname:pSurface is a pointer to a sname:VkSurfaceKHR handle in which the
40+
* pname:pSurface is a pointer to a slink:VkSurfaceKHR handle in which the
4141
created surface object is returned.
4242

4343
include::{generated}/validity/protos/vkCreateHeadlessSurfaceEXT.adoc[]

chapters/VK_EXT_metal_surface/platformCreateSurface_metal.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ include::{generated}/api/protos/vkCreateMetalSurfaceEXT.adoc[]
2020
* pname:pAllocator is the allocator used for host memory allocated for the
2121
surface object when there is no more specific allocator available (see
2222
<<memory-allocation,Memory Allocation>>).
23-
* pname:pSurface is a pointer to a sname:VkSurfaceKHR handle in which the
23+
* pname:pSurface is a pointer to a slink:VkSurfaceKHR handle in which the
2424
created surface object is returned.
2525

2626
include::{generated}/validity/protos/vkCreateMetalSurfaceEXT.adoc[]

chapters/VK_EXT_private_data.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ endif::VK_EXT_private_data[]
5151

5252
* pname:device is the logical device associated with the creation of the
5353
object(s) holding the private data slot.
54-
* pname:pCreateInfo is a pointer to a sname:VkPrivateDataSlotCreateInfo
54+
* pname:pCreateInfo is a pointer to a slink:VkPrivateDataSlotCreateInfo
5555
* pname:pAllocator controls host memory allocation as described in the
5656
<<memory-allocation, Memory Allocation>> chapter.
5757
* pname:pPrivateDataSlot is a pointer to a slink:VkPrivateDataSlot handle

chapters/VK_KHR_android_surface/platformCreateSurface_android.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ To create a sname:VkSurfaceKHR object for an Android native window, call:
1414
include::{generated}/api/protos/vkCreateAndroidSurfaceKHR.adoc[]
1515

1616
* pname:instance is the instance to associate the surface with.
17-
* pname:pCreateInfo is a pointer to a sname:VkAndroidSurfaceCreateInfoKHR
17+
* pname:pCreateInfo is a pointer to a slink:VkAndroidSurfaceCreateInfoKHR
1818
structure containing parameters affecting the creation of the surface
1919
object.
2020
* pname:pAllocator is the allocator used for host memory allocated for the

chapters/VK_KHR_performance_query/queriesperformance.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ To acquire the profiling lock, call:
9292
include::{generated}/api/protos/vkAcquireProfilingLockKHR.adoc[]
9393

9494
* pname:device is the logical device to profile.
95-
* pname:pInfo is a pointer to a sname:VkAcquireProfilingLockInfoKHR
95+
* pname:pInfo is a pointer to a slink:VkAcquireProfilingLockInfoKHR
9696
structure containing information about how the profiling is to be
9797
acquired.
9898

chapters/VK_KHR_surface/wsi.adoc

+5
Original file line numberDiff line numberDiff line change
@@ -1968,3 +1968,8 @@ endif::VK_AMD_anti_lag,VK_NV_low_latency2[]
19681968
ifdef::VK_NV_present_barrier[]
19691969
include::{chapters}/VK_NV_present_barrier/present_barrier.adoc[]
19701970
endif::VK_NV_present_barrier[]
1971+
1972+
ifdef::VK_NV_present_metering[]
1973+
include::{chapters}/VK_NV_present_metering/present_metering.adoc[]
1974+
endif::VK_NV_present_metering[]
1975+

chapters/VK_KHR_win32_surface/platformCreateSurface_win32.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ To create a sname:VkSurfaceKHR object for a Win32 window, call:
1414
include::{generated}/api/protos/vkCreateWin32SurfaceKHR.adoc[]
1515

1616
* pname:instance is the instance to associate the surface with.
17-
* pname:pCreateInfo is a pointer to a sname:VkWin32SurfaceCreateInfoKHR
17+
* pname:pCreateInfo is a pointer to a slink:VkWin32SurfaceCreateInfoKHR
1818
structure containing parameters affecting the creation of the surface
1919
object.
2020
* pname:pAllocator is the allocator used for host memory allocated for the

chapters/VK_KHR_xcb_surface/platformCreateSurface_xcb.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ client-side library, call:
1515
include::{generated}/api/protos/vkCreateXcbSurfaceKHR.adoc[]
1616

1717
* pname:instance is the instance to associate the surface with.
18-
* pname:pCreateInfo is a pointer to a sname:VkXcbSurfaceCreateInfoKHR
18+
* pname:pCreateInfo is a pointer to a slink:VkXcbSurfaceCreateInfoKHR
1919
structure containing parameters affecting the creation of the surface
2020
object.
2121
* pname:pAllocator is the allocator used for host memory allocated for the

chapters/VK_KHR_xlib_surface/platformCreateSurface_xlib.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ client-side library, call:
1515
include::{generated}/api/protos/vkCreateXlibSurfaceKHR.adoc[]
1616

1717
* pname:instance is the instance to associate the surface with.
18-
* pname:pCreateInfo is a pointer to a sname:VkXlibSurfaceCreateInfoKHR
18+
* pname:pCreateInfo is a pointer to a slink:VkXlibSurfaceCreateInfoKHR
1919
structure containing the parameters affecting the creation of the
2020
surface object.
2121
* pname:pAllocator is the allocator used for host memory allocated for the

chapters/VK_NN_vi_surface/platformCreateSurface_vi.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ code:nn::code:vi::code:GetNativeWindow, and then call:
1616
include::{generated}/api/protos/vkCreateViSurfaceNN.adoc[]
1717

1818
* pname:instance is the instance with which to associate the surface.
19-
* pname:pCreateInfo is a pointer to a sname:VkViSurfaceCreateInfoNN
19+
* pname:pCreateInfo is a pointer to a slink:VkViSurfaceCreateInfoNN
2020
structure containing parameters affecting the creation of the surface
2121
object.
2222
* pname:pAllocator is the allocator used for host memory allocated for the
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright 2025 The Khronos Group Inc.
2+
//
3+
// SPDX-License-Identifier: CC-BY-4.0
4+
5+
[[present-metering]]
6+
=== Present Metering
7+
8+
[open,refpage='VkSetPresentConfigNV',desc='Structure specifying present metering configuration',type='structs']
9+
--
10+
11+
Present Metering evenly paces out the next pname:numFramesPerBatch
12+
flink:vkQueuePresentKHR presents.
13+
This gives smoother pacing between presents in applications with frame
14+
generation integrations.
15+
16+
The sname:VkSetPresentConfigNV structure is defined as:
17+
18+
include::{generated}/api/structs/VkSetPresentConfigNV.adoc[]
19+
20+
* pname:sType is a elink:VkStructureType value identifying this structure.
21+
* pname:pNext is `NULL` or a pointer to a structure extending this
22+
structure.
23+
* pname:numFramesPerBatch is the number of frames to batch
24+
* pname:presentConfigFeedback will return the success or error status
25+
26+
The metering configuration applies to all swapchains in the array in
27+
slink:VkPresentInfoKHR.
28+
The configuration specified by sname:VkSetPresentConfigNV applies to the
29+
next pname:numFramesPerBatch calls to flink:vkQueuePresentKHR and needs to
30+
be updated every pname:numFramesPerBatch presents.
31+
32+
.Valid Usage
33+
****
34+
* [[VUID-VkSetPresentConfigNV-numFramesPerBatch-10581]]
35+
pname:numFramesPerBatch must: not be larger than 8
36+
****
37+
38+
include::{generated}/validity/structs/VkSetPresentConfigNV.adoc[]
39+
--

chapters/commonvalidity/draw_common.adoc

+8
Original file line numberDiff line numberDiff line change
@@ -1335,6 +1335,14 @@ endif::VK_EXT_multisampled_render_to_single_sampled[]
13351335
dlink:VK_NULL_HANDLE, then the
13361336
slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat used
13371337
to create the pipeline must: not be ename:VK_FORMAT_UNDEFINED
1338+
* [[VUID-{refpage}-flags-10582]]
1339+
If the current render pass instance was begun with
1340+
flink:vkCmdBeginRendering, its slink:VkRenderingInfo::pname:flags
1341+
parameter must: not have
1342+
ename:VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT set
1343+
ifdef::VK_KHR_maintenance7,VK_EXT_nested_command_buffer[]
1344+
unless ename:VK_RENDERING_CONTENTS_INLINE_BIT_KHR is also set
1345+
endif::VK_KHR_maintenance7,VK_EXT_nested_command_buffer[]
13381346
endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
13391347
ifdef::VK_EXT_primitives_generated_query[]
13401348
* [[VUID-{refpage}-primitivesGeneratedQueryWithRasterizerDiscard-06708]]

chapters/descriptorsets.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -5676,7 +5676,7 @@ endif::VK_KHR_maintenance6[]
56765676

56775677
* pname:commandBuffer is the command buffer in which the push constant
56785678
update will be recorded.
5679-
* pname:pPushConstantsInfo is a pointer to a sname:VkPushConstantsInfo
5679+
* pname:pPushConstantsInfo is a pointer to a slink:VkPushConstantsInfo
56805680
structure.
56815681

56825682
include::{generated}/validity/protos/vkCmdPushConstants2.adoc[]

chapters/features.adoc

+23
Original file line numberDiff line numberDiff line change
@@ -8522,6 +8522,29 @@ include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeRobustnessF
85228522
--
85238523
endif::VK_EXT_vertex_attribute_robustness[]
85248524

8525+
ifdef::VK_NV_present_metering[]
8526+
[open,refpage='VkPhysicalDevicePresentMeteringFeaturesNV',desc='Structure describing whether the present metering features can be supported by an implementation',type='structs']
8527+
--
8528+
The sname:VkPhysicalDevicePresentMeteringFeaturesNV structure is defined as:
8529+
8530+
include::{generated}/api/structs/VkPhysicalDevicePresentMeteringFeaturesNV.adoc[]
8531+
8532+
This structure describes the following features:
8533+
8534+
* pname:sType is a elink:VkStructureType value identifying this structure.
8535+
* pname:pNext is `NULL` or a pointer to a structure extending this
8536+
structure.
8537+
* [[features-presentMetering]] pname:presentMetering indicates whether the
8538+
implementation supports present metering capability.
8539+
8540+
:refpage: VkPhysicalDevicePresentMeteringFeaturesNV
8541+
include::{chapters}/features.adoc[tag=features]
8542+
8543+
include::{generated}/validity/structs/VkPhysicalDevicePresentMeteringFeaturesNV.adoc[]
8544+
--
8545+
endif::VK_NV_present_metering[]
8546+
8547+
85258548
[[features-requirements]]
85268549
== Feature Requirements
85278550

0 commit comments

Comments
 (0)