Skip to content

Commit 419a612

Browse files
shader_object: Use VulkanObject in codegen
Refactors shader_object_generator.py to use VulkanObject to generate the shader object implementation files. This is done to ensure future maintainability of shader_object by utilizing definitions of types and variables in it rather than solely relying on the hand maintained shader_object_data.json. However, because Vulkan Object is lacking some API details the bulk of the contents of shader_object_data.json had to be preserved. For example, VkDynamicState enums correspond to various state setting commands but VulkanObject nor vk.xml define those relationships. Changes in this PR include: * generate_source.py added which handles running the codegen for each file. * running clang-format on the output files * Adding the CMake target `extension_layer_codegen` to automate running codegen. Must set EXTENSION_LAYER_CODEGEN build option to true to make available. * Adding `VERSION` to `project()` in the top level CMakeLists.txt, allowing dependencies to easily require a specific version of this repo.
1 parent 14d4b76 commit 419a612

15 files changed

Lines changed: 2709 additions & 3033 deletions

CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# ~~~
1818
cmake_minimum_required(VERSION 3.22.1)
1919

20-
project(VEL LANGUAGES CXX)
20+
project(VEL VERSION 1.4.335 LANGUAGES CXX)
2121

2222
add_subdirectory(scripts)
2323

@@ -85,6 +85,16 @@ find_package(VulkanUtilityLibraries CONFIG)
8585
add_subdirectory(layers)
8686
add_subdirectory(utils)
8787

88+
option(EXTENSION_LAYER_CODEGEN "Enable vulkan loader code generation")
89+
if(EXTENSION_LAYER_CODEGEN)
90+
find_package(Python3 REQUIRED)
91+
add_custom_target(extension_layer_codegen
92+
COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/generate_source.py
93+
"${VULKAN_HEADERS_INSTALL_DIR}/${CMAKE_INSTALL_DATADIR}/vulkan/registry"
94+
--generated-version ${VulkanHeaders_VERSION} --incremental --api vulkan
95+
)
96+
endif()
97+
8898
option(BUILD_TESTS "Build tests")
8999
if(BUILD_TESTS)
90100
enable_testing()

layers/shader_object/generated/shader_object_constants.h

Lines changed: 129 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -25,91 +25,147 @@
2525
#include "shader_object/shader_object_util.h"
2626

2727
enum AdditionalExtensionFlagBits {
28-
DYNAMIC_RENDERING = 1u << 0,
29-
MAINTENANCE_2 = 1u << 1,
30-
PRIVATE_DATA = 1u << 2,
31-
EXTENDED_DYNAMIC_STATE_1 = 1u << 3,
32-
EXTENDED_DYNAMIC_STATE_2 = 1u << 4,
33-
EXTENDED_DYNAMIC_STATE_3 = 1u << 5,
34-
VERTEX_INPUT_DYNAMIC = 1u << 6,
35-
GRAPHICS_PIPELINE_LIBRARY = 1u << 7,
36-
PIPELINE_LIBRARY = 1u << 8,
37-
MULTIVIEW = 1u << 9,
38-
CREATE_RENDERPASS_2 = 1u << 10,
39-
DEPTH_STENCIL_RESOLVE = 1u << 11,
40-
DRIVER_PROPERTIES = 1u << 12,
28+
DYNAMIC_RENDERING = 1u << 0,
29+
MAINTENANCE2 = 1u << 1,
30+
PRIVATE_DATA = 1u << 2,
31+
EXTENDED_DYNAMIC_STATE = 1u << 3,
32+
EXTENDED_DYNAMIC_STATE2 = 1u << 4,
33+
EXTENDED_DYNAMIC_STATE3 = 1u << 5,
34+
VERTEX_INPUT_DYNAMIC_STATE = 1u << 6,
35+
GRAPHICS_PIPELINE_LIBRARY = 1u << 7,
36+
PIPELINE_LIBRARY = 1u << 8,
37+
MULTIVIEW = 1u << 9,
38+
CREATE_RENDERPASS2 = 1u << 10,
39+
DEPTH_STENCIL_RESOLVE = 1u << 11,
40+
DRIVER_PROPERTIES = 1u << 12,
4141
DYNAMIC_RENDERING_UNUSED_ATTACHMENTS = 1u << 13,
42-
TRANSFORM_FEEDBACK = 1u << 14,
43-
CONSERVATIVE_RASTERIZATION = 1u << 15,
44-
DEPTH_CLIP_ENABLE = 1u << 16,
45-
SAMPLE_LOCATIONS = 1u << 17,
46-
PROVOKING_VERTEX = 1u << 18,
47-
LINE_RASTERIZATION = 1u << 19,
48-
DEPTH_CLIP_CONTROL = 1u << 20,
49-
NV_FRAMEBUFFER_MIXED_SAMPLES = 1u << 21,
50-
NV_COVERAGE_REDUCTION_MODE = 1u << 22,
51-
NV_FRAGMENT_COVERAGE_TO_COLOR = 1u << 23,
52-
NV_CLIP_SPACE_W_SCALING = 1u << 24,
53-
NV_VIEWPORT_SWIZZLE = 1u << 25,
54-
NV_SHADING_RATE_IMAGE = 1u << 26,
55-
NV_REPRESENTATIVE_FRAGMENT_TEST = 1u << 27,
56-
SHADER_OBJECT = 1u << 28,
42+
TRANSFORM_FEEDBACK = 1u << 14,
43+
CONSERVATIVE_RASTERIZATION = 1u << 15,
44+
DEPTH_CLIP_ENABLE = 1u << 16,
45+
SAMPLE_LOCATIONS = 1u << 17,
46+
PROVOKING_VERTEX = 1u << 18,
47+
LINE_RASTERIZATION = 1u << 19,
48+
DEPTH_CLIP_CONTROL = 1u << 20,
49+
NV_FRAMEBUFFER_MIXED_SAMPLES = 1u << 21,
50+
NV_COVERAGE_REDUCTION_MODE = 1u << 22,
51+
NV_FRAGMENT_COVERAGE_TO_COLOR = 1u << 23,
52+
NV_CLIP_SPACE_W_SCALING = 1u << 24,
53+
NV_VIEWPORT_SWIZZLE = 1u << 25,
54+
NV_SHADING_RATE_IMAGE = 1u << 26,
55+
NV_REPRESENTATIVE_FRAGMENT_TEST = 1u << 27,
56+
SHADER_OBJECT = 1u << 28,
5757
};
5858
using AdditionalExtensionFlags = uint32_t;
5959

6060
inline AdditionalExtensionFlags AdditionalExtensionStringToFlag(const char* pExtensionName) {
61-
if (strncmp(pExtensionName, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DYNAMIC_RENDERING; }
62-
if (strncmp(pExtensionName, VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return MAINTENANCE_2; }
63-
if (strncmp(pExtensionName, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PRIVATE_DATA; }
64-
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_1; }
65-
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_2; }
66-
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_3; }
67-
if (strncmp(pExtensionName, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return VERTEX_INPUT_DYNAMIC; }
68-
if (strncmp(pExtensionName, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return GRAPHICS_PIPELINE_LIBRARY; }
69-
if (strncmp(pExtensionName, VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PIPELINE_LIBRARY; }
70-
if (strncmp(pExtensionName, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return MULTIVIEW; }
71-
if (strncmp(pExtensionName, VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return CREATE_RENDERPASS_2; }
72-
if (strncmp(pExtensionName, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_STENCIL_RESOLVE; }
73-
if (strncmp(pExtensionName, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DRIVER_PROPERTIES; }
74-
if (strncmp(pExtensionName, VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DYNAMIC_RENDERING_UNUSED_ATTACHMENTS; }
75-
if (strncmp(pExtensionName, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return TRANSFORM_FEEDBACK; }
76-
if (strncmp(pExtensionName, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return CONSERVATIVE_RASTERIZATION; }
77-
if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_CLIP_ENABLE; }
78-
if (strncmp(pExtensionName, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return SAMPLE_LOCATIONS; }
79-
if (strncmp(pExtensionName, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PROVOKING_VERTEX; }
80-
if (strncmp(pExtensionName, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return LINE_RASTERIZATION; }
81-
if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_CLIP_CONTROL; }
82-
if (strncmp(pExtensionName, VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_FRAMEBUFFER_MIXED_SAMPLES; }
83-
if (strncmp(pExtensionName, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_COVERAGE_REDUCTION_MODE; }
84-
if (strncmp(pExtensionName, VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_FRAGMENT_COVERAGE_TO_COLOR; }
85-
if (strncmp(pExtensionName, VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_CLIP_SPACE_W_SCALING; }
86-
if (strncmp(pExtensionName, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_VIEWPORT_SWIZZLE; }
87-
if (strncmp(pExtensionName, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_SHADING_RATE_IMAGE; }
88-
if (strncmp(pExtensionName, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_REPRESENTATIVE_FRAGMENT_TEST; }
89-
if (strncmp(pExtensionName, VK_EXT_SHADER_OBJECT_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return SHADER_OBJECT; }
61+
if (strncmp(pExtensionName, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
62+
return DYNAMIC_RENDERING;
63+
}
64+
if (strncmp(pExtensionName, VK_KHR_MAINTENANCE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
65+
return MAINTENANCE2;
66+
}
67+
if (strncmp(pExtensionName, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
68+
return PRIVATE_DATA;
69+
}
70+
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
71+
return EXTENDED_DYNAMIC_STATE;
72+
}
73+
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
74+
return EXTENDED_DYNAMIC_STATE2;
75+
}
76+
if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
77+
return EXTENDED_DYNAMIC_STATE3;
78+
}
79+
if (strncmp(pExtensionName, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
80+
return VERTEX_INPUT_DYNAMIC_STATE;
81+
}
82+
if (strncmp(pExtensionName, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
83+
return GRAPHICS_PIPELINE_LIBRARY;
84+
}
85+
if (strncmp(pExtensionName, VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
86+
return PIPELINE_LIBRARY;
87+
}
88+
if (strncmp(pExtensionName, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
89+
return MULTIVIEW;
90+
}
91+
if (strncmp(pExtensionName, VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
92+
return CREATE_RENDERPASS2;
93+
}
94+
if (strncmp(pExtensionName, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
95+
return DEPTH_STENCIL_RESOLVE;
96+
}
97+
if (strncmp(pExtensionName, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
98+
return DRIVER_PROPERTIES;
99+
}
100+
if (strncmp(pExtensionName, VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
101+
return DYNAMIC_RENDERING_UNUSED_ATTACHMENTS;
102+
}
103+
if (strncmp(pExtensionName, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
104+
return TRANSFORM_FEEDBACK;
105+
}
106+
if (strncmp(pExtensionName, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
107+
return CONSERVATIVE_RASTERIZATION;
108+
}
109+
if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
110+
return DEPTH_CLIP_ENABLE;
111+
}
112+
if (strncmp(pExtensionName, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
113+
return SAMPLE_LOCATIONS;
114+
}
115+
if (strncmp(pExtensionName, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
116+
return PROVOKING_VERTEX;
117+
}
118+
if (strncmp(pExtensionName, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
119+
return LINE_RASTERIZATION;
120+
}
121+
if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
122+
return DEPTH_CLIP_CONTROL;
123+
}
124+
if (strncmp(pExtensionName, VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
125+
return NV_FRAMEBUFFER_MIXED_SAMPLES;
126+
}
127+
if (strncmp(pExtensionName, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
128+
return NV_COVERAGE_REDUCTION_MODE;
129+
}
130+
if (strncmp(pExtensionName, VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
131+
return NV_FRAGMENT_COVERAGE_TO_COLOR;
132+
}
133+
if (strncmp(pExtensionName, VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
134+
return NV_CLIP_SPACE_W_SCALING;
135+
}
136+
if (strncmp(pExtensionName, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
137+
return NV_VIEWPORT_SWIZZLE;
138+
}
139+
if (strncmp(pExtensionName, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
140+
return NV_SHADING_RATE_IMAGE;
141+
}
142+
if (strncmp(pExtensionName, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
143+
return NV_REPRESENTATIVE_FRAGMENT_TEST;
144+
}
145+
if (strncmp(pExtensionName, VK_EXT_SHADER_OBJECT_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) {
146+
return SHADER_OBJECT;
147+
}
90148
return {};
91149
}
92-
93150
struct ExtensionData {
94151
const char* extension_name;
95152
AdditionalExtensionFlagBits flag;
96153
};
97-
98154
constexpr ExtensionData kAdditionalExtensions[] = {
99-
{ VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DYNAMIC_RENDERING },
100-
{ VK_KHR_MAINTENANCE2_EXTENSION_NAME, MAINTENANCE_2 },
101-
{ VK_EXT_PRIVATE_DATA_EXTENSION_NAME, PRIVATE_DATA },
102-
{ VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_1 },
103-
{ VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_2 },
104-
{ VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_3 },
105-
{ VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VERTEX_INPUT_DYNAMIC },
106-
{ VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, GRAPHICS_PIPELINE_LIBRARY },
107-
{ VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, PIPELINE_LIBRARY },
108-
{ VK_KHR_MULTIVIEW_EXTENSION_NAME, MULTIVIEW },
109-
{ VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, CREATE_RENDERPASS_2 },
110-
{ VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DEPTH_STENCIL_RESOLVE },
111-
{ VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DRIVER_PROPERTIES },
112-
{ VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS },
155+
{VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DYNAMIC_RENDERING},
156+
{VK_KHR_MAINTENANCE_2_EXTENSION_NAME, MAINTENANCE2},
157+
{VK_EXT_PRIVATE_DATA_EXTENSION_NAME, PRIVATE_DATA},
158+
{VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE},
159+
{VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE2},
160+
{VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE3},
161+
{VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VERTEX_INPUT_DYNAMIC_STATE},
162+
{VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, GRAPHICS_PIPELINE_LIBRARY},
163+
{VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, PIPELINE_LIBRARY},
164+
{VK_KHR_MULTIVIEW_EXTENSION_NAME, MULTIVIEW},
165+
{VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, CREATE_RENDERPASS2},
166+
{VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DEPTH_STENCIL_RESOLVE},
167+
{VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DRIVER_PROPERTIES},
168+
{VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS},
113169
};
114170

115171
constexpr uint32_t kMaxDynamicStates = 58;

0 commit comments

Comments
 (0)