Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic state3 multisample rasterization #856

Open
wants to merge 58 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a930066
Add initial test framework.
pawel-jastrzebski-mobica Oct 13, 2023
f36f9e6
Add MSAAm sample code.
pawel-jastrzebski-mobica Oct 17, 2023
3c4b9fe
Add sample with SpaceModule scene.
pawel-jastrzebski-mobica Nov 8, 2023
e26d3da
Rendering proper BaseModule scene.
pawel-jastrzebski-mobica Nov 14, 2023
0175f6a
Fix copyrights.
pawel-jastrzebski-mobica Nov 14, 2023
0d06897
First version of MSAA works.
pawel-jastrzebski-mobica Nov 17, 2023
1170d1b
Implement dynamic sample selection.
pawel-jastrzebski-mobica Nov 24, 2023
46258c2
Add setter for last_requested_extension_feature.
pawel-jastrzebski-mobica Nov 27, 2023
447a3ad
Fix clang-format.
pawel-jastrzebski-mobica Nov 27, 2023
22c1930
Merge branch 'KhronosGroup:main' into dynamic_state3_multisample_rast…
pawel-jastrzebski-mobica Nov 27, 2023
7e5319f
Fix copyright.
pawel-jastrzebski-mobica Nov 27, 2023
4072330
Fix vulkan version.
pawel-jastrzebski-mobica Nov 28, 2023
5e73402
Update readme.
pawel-jastrzebski-mobica Nov 28, 2023
0f88145
Remove unneeded code from shader.
pawel-jastrzebski-mobica Nov 28, 2023
2eed170
Fix copyright.
pawel-jastrzebski-mobica Nov 28, 2023
032ca90
Add README.md
pawel-jastrzebski-mobica Nov 28, 2023
6b3e879
Add sample to CMake.
pawel-jastrzebski-mobica Nov 28, 2023
2e86179
Remove explicit reference from local viewport initializer.
pawel-jastrzebski-mobica Nov 28, 2023
37d42ce
Change resources create/update logic.
pawel-jastrzebski-mobica Nov 29, 2023
82be0a3
Fix clang-format.
pawel-jastrzebski-mobica Nov 29, 2023
ccc694c
Fix format for vertex input attribute descriptor.
pawel-jastrzebski-mobica Dec 1, 2023
c7b872f
Separate rendering for scene meshes with different rasterizer settings.
pawel-jastrzebski-mobica Dec 1, 2023
5d04e70
Change camera position.
pawel-jastrzebski-mobica Dec 4, 2023
792fc0a
Fix light position.
pawel-jastrzebski-mobica Dec 4, 2023
94db8df
Update README files.
pawel-jastrzebski-mobica Dec 4, 2023
a805676
Update sample image.
pawel-jastrzebski-mobica Dec 4, 2023
d812e3e
Merge branch 'KhronosGroup:main' into dynamic_state3_multisample_rast…
pawel-jastrzebski-mobica Dec 4, 2023
d537ce4
Fix warnings.
pawel-jastrzebski-mobica Dec 4, 2023
143196d
Fix typos in README files.
pawel-jastrzebski-mobica Dec 4, 2023
e5fb84c
Fix comment.
pawel-jastrzebski-mobica Dec 4, 2023
4e9f813
Fix review comments.
pawel-jastrzebski-mobica Dec 6, 2023
1bc20d4
Fix review comments.
pawel-jastrzebski-mobica Dec 18, 2023
59686d3
Fix review comments.
pawel-jastrzebski-mobica Dec 18, 2023
e6f1413
Merge branch 'main' into dynamic_state3_multisample_rasterization
pawel-jastrzebski-mobica Dec 18, 2023
e6829cd
Rename project.
pawel-jastrzebski-mobica Dec 19, 2023
92f0bbf
Fix review comments.
pawel-jastrzebski-mobica Jan 15, 2024
f037dc3
Add multisampling to GUI rendering.
pawel-jastrzebski-mobica Feb 1, 2024
d2016f3
Update README
pawel-jastrzebski-mobica Feb 2, 2024
ca0a459
Change rotation speed.
pawel-jastrzebski-mobica Feb 2, 2024
f4d0e0e
Fix clang-format.
pawel-jastrzebski-mobica Feb 2, 2024
9ca4309
Update copyright year.
pawel-jastrzebski-mobica Feb 5, 2024
8d4c1d1
Copyright fix in CMakeLists
Mateusz-Kowalewski-Mobica Feb 13, 2024
7e1e986
Fix review comments.
pawel-jastrzebski-mobica Feb 20, 2024
b2421ad
Fix review comments.
pawel-jastrzebski-mobica Feb 20, 2024
0b806c6
Fix VUID-VkSubpassDescription-pResolveAttachments-00848
Mateusz-Kowalewski-Mobica Feb 20, 2024
7e2434b
Image destroy refactor
Mateusz-Kowalewski-Mobica Feb 26, 2024
c4d78cb
Fix windows build issue
Mateusz-Kowalewski-Mobica Feb 27, 2024
ff3708b
Add dynamic rendering
Mateusz-Kowalewski-Mobica Mar 8, 2024
6f73a24
Gui merge conflicts fix
Mateusz-Kowalewski-Mobica Mar 8, 2024
65b93cd
Fix regressions after implementing dynamic rendering
Mateusz-Kowalewski-Mobica Mar 12, 2024
7af25fd
Merge branch 'main' into dynamic_state3_multisample_rasterization
Mateusz-Kowalewski-Mobica Mar 13, 2024
bdb6973
Adjust sample to changes from PR#910
Mateusz-Kowalewski-Mobica Mar 13, 2024
38fb8bd
Fix sync issue
Mateusz-Kowalewski-Mobica Mar 14, 2024
130d3e4
Documentation update
Mateusz-Kowalewski-Mobica Mar 27, 2024
8aacbb8
Merge branch 'main' into dynamic_state3_multisample_rasterization
Mateusz-Kowalewski-Mobica Apr 22, 2024
5467a77
Merge branch 'main' into dynamic_state3_multisample_rasterization
Mateusz-Kowalewski-Mobica May 7, 2024
7acbd64
Remove unused feature
Mateusz-Kowalewski-Mobica May 7, 2024
22b56ac
VK objects initializations added
Mateusz-Kowalewski-Mobica May 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions samples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ set(ORDER_LIST
"fragment_shader_barycentric"
"gshader_to_mshader"
"color_write_enable"
"dynamic_state3_multisample_rasterization"

#Performance Samples
"swapchain_images"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright (c) 2023, Mobica Limited
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 the "License";
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

get_filename_component(FOLDER_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
get_filename_component(PARENT_DIR ${CMAKE_CURRENT_LIST_DIR} PATH)
get_filename_component(CATEGORY_NAME ${PARENT_DIR} NAME)

add_sample(
ID ${FOLDER_NAME}
CATEGORY ${CATEGORY_NAME}
AUTHOR "Mobica"
NAME "Extended Dynamic State3 Multisample Rasterization"
DESCRIPTION "Sample description"
SHADER_FILES_GLSL
"dynamic_state3_multisample_rasterization/model.vert"
"dynamic_state3_multisample_rasterization/model.frag")
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
////
- Copyright (c) 2023, Mobica Limited
-
- SPDX-License-Identifier: Apache-2.0
-
- Licensed under the Apache License, Version 2.0 the "License";
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
////

// Extended dynamic_state3: Rasterization samples


== Overview

This sample demonstrates one of the functionalities of VK_EXT_extended_dynamic_state3 related to rasterization samples.
The extension can be used to dynamically change sampling without any need to restart the application.
image:image/image.png[]

== Enabling the extension

To be able to use this extension in Vulkan API:
1) At least Vulkan API version 1.1 must be supported.
pawel-jastrzebski-mobica marked this conversation as resolved.
Show resolved Hide resolved
2) Set of `VkPhysicalDeviceExtendedDynamicStateFeaturesEXT`, `VkPhysicalDeviceExtendedDynamicState2FeaturesEXT`, `VkPhysicalDeviceExtendedDynamicState3FeaturesEXT`
must be added to the feature chain of `VkPhysicalDeviceProperties2` and `VkPhysicalDeviceExtendedDynamicState3PropertiesEXT` must be added to `VkPhysicalDeviceProperties2`.
pawel-jastrzebski-mobica marked this conversation as resolved.
Show resolved Hide resolved

== Using the extension

To use the extension:
1) `VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT` must be added to `VkPipelineDynamicStateCreateInfo`.
2) Method `void vkCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples)` should be called between
`vkCmdBeginRenderPass` and `vkCmdEndRenderPass`.

== Known issues

The extension always reports the following validation error when enabled:
....
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x15d301ca4e0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[2] (1000455005) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually don't want samples with open validation errors. Is there any reason why these can't be fixed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have checked other samples and examples that implement usage if this extension and all of them report validation errors on my system. I don't know if this is the driver issue or any other Vulkan or system-related issue. Here are some examples:

Vulkan-Samples\samples\extensions\dynamic_blending\dynamic_blending.cpp:
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1bfc7d2a4c0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[2] (1000455012) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1bfc7d2a4c0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[3] (1000455010) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1bfc7d2a4c0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[4] (1000455011) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token

Vulkan-Samples\samples\extensions\dynamic_line_rasterization\dynamic_line_rasterization.cpp:
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[3] (1000455004) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[4] (1000455020) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[5] (1000455021) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[3] (1000455004) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[4] (1000455020) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1100021871 - UNASSIGNED-GeneralParameterError-UnrecognizedValue: Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1964e042c40, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[5] (1000455021) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
[error] [framework\core\instance.cpp:50] -1299052176 - VUID-vkCmdDrawIndexed-primitiveTopology-03420: Validation Error: [ VUID-vkCmdDrawIndexed-primitiveTopology-03420 ] Object 0: handle = 0x89e60f0000000042, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0xb2920970 | vkCmdDrawIndexed: the last primitive topology VK_PRIMITIVE_TOPOLOGY_LINE_LIST state set by vkCmdSetPrimitiveTopologyEXT is not compatible with the pipeline topology VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST. The Vulkan spec states: If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology parameter of vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology state (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-primitiveTopology-03420)
Vulkan\examples\dynamicstate\dynamicstate.cpp:sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
WARNING: [2044605652][VUID_Undefined] : Validation Warning: [ VUID_Undefined ] Object 0: handle = 0x1d2a2b165b0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x79de34d4 | Device Extension VK_EXT_extended_dynamic_state3 is not supported by this layer.  Using this extension may adversely affect validation results and/or produce undefined behavior.

ERROR: [-1100021871][UNASSIGNED-GeneralParameterError-UnrecognizedValue] : Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1d2a2b165b0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[8] (1000455010) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token

ERROR: [-1100021871][UNASSIGNED-GeneralParameterError-UnrecognizedValue] : Validation Error: [ UNASSIGNED-GeneralParameterError-UnrecognizedValue ] Object 0: handle = 0x1d2a2b165b0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xbe6eff91 | vkCreateGraphicsPipelines: value of pCreateInfos[0].pDynamicState->pDynamicStates[9] (1000455011) does not fall within the begin..end range of the core VkDynamicState enumeration tokens and is not an extension added token

....

This implies several other validation errors during runtime:
....
[error] [framework\core\instance.cpp:50] -1052047544 - VUID-vkCmdDraw-rasterizationSamples-04740: Validation Error: [ VUID-vkCmdDraw-rasterizationSamples-04740 ] Object 0: handle = 0xf6d9250000000139, type = VK_OBJECT_TYPE_PIPELINE; Object 1: handle = 0xfc06e9000000013d, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0xc14b0748 | vkCmdDraw: In VkPipeline 0xf6d9250000000139[] the sample count is VK_SAMPLE_COUNT_1_BIT while the current VkRenderPass 0xfc06e9000000013d[] has VK_SAMPLE_COUNT_4_BIT and they need to be the same. The Vulkan spec states: If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDraw-rasterizationSamples-04740)
[error] [framework\core\instance.cpp:50] 1349015333 - VUID-vkCmdDraw-renderPass-02684: Validation Error: [ VUID-vkCmdDraw-renderPass-02684 ] Object 0: handle = 0xfc06e9000000013d, type = VK_OBJECT_TYPE_RENDER_PASS; Object 1: handle = 0xab64de0000000020, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x50685725 | vkCmdDraw: RenderPasses incompatible between active render pass w/ VkRenderPass 0xfc06e9000000013d[] and pipeline state object w/ VkRenderPass 0xab64de0000000020[] Attachment 0 is not compatible with 0: They have different samples.. The Vulkan spec states: The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDraw-renderPass-02684)
[error] [framework\core\instance.cpp:50] -329854293 - VUID-vkCmdDrawIndexed-rasterizationSamples-04740: Validation Error: [ VUID-vkCmdDrawIndexed-rasterizationSamples-04740 ] Object 0: handle = 0x9f9b41000000003c, type = VK_OBJECT_TYPE_PIPELINE; Object 1: handle = 0xfc06e9000000013d, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0xec56d2ab | vkCmdDrawIndexed: In VkPipeline 0x9f9b41000000003c[] the sample count is VK_SAMPLE_COUNT_1_BIT while the current VkRenderPass 0xfc06e9000000013d[] has VK_SAMPLE_COUNT_4_BIT and they need to be the same. The Vulkan spec states: If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be the same as the current subpass color and/or depth/stencil attachments (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-rasterizationSamples-04740)
[error] [framework\core\instance.cpp:50] -1934215230 - VUID-vkCmdDrawIndexed-renderPass-02684: Validation Error: [ VUID-vkCmdDrawIndexed-renderPass-02684 ] Object 0: handle = 0xfc06e9000000013d, type = VK_OBJECT_TYPE_RENDER_PASS; Object 1: handle = 0xab64de0000000020, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x8cb637c2 | vkCmdDrawIndexed: RenderPasses incompatible between active render pass w/ VkRenderPass 0xfc06e9000000013d[] and pipeline state object w/ VkRenderPass 0xab64de0000000020[] Attachment 0 is not compatible with 0: They have different samples.. The Vulkan spec states: The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdDrawIndexed-renderPass-02684)
....

== Resources

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html
https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetRasterizationSamplesEXT.html
Loading
Loading