29 vk_compute_pipeline_create_info_.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
30 vk_compute_pipeline_create_info_.pNext =
nullptr;
31 vk_compute_pipeline_create_info_.flags = 0;
32 vk_compute_pipeline_create_info_.layout = VK_NULL_HANDLE;
33 vk_compute_pipeline_create_info_.basePipelineHandle = VK_NULL_HANDLE;
34 vk_compute_pipeline_create_info_.basePipelineIndex = 0;
35 VkPipelineShaderStageCreateInfo &vk_pipeline_shader_stage_create_info =
36 vk_compute_pipeline_create_info_.stage;
37 vk_pipeline_shader_stage_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
38 vk_pipeline_shader_stage_create_info.pNext =
nullptr;
39 vk_pipeline_shader_stage_create_info.flags = 0;
40 vk_pipeline_shader_stage_create_info.stage = VK_SHADER_STAGE_COMPUTE_BIT;
41 vk_pipeline_shader_stage_create_info.module = VK_NULL_HANDLE;
42 vk_pipeline_shader_stage_create_info.pName =
"main";
45 vk_graphics_pipeline_create_info_ = {};
46 vk_graphics_pipeline_create_info_.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
47 vk_graphics_pipeline_create_info_.pNext = &vk_pipeline_rendering_create_info_;
48 vk_graphics_pipeline_create_info_.stageCount = 0;
49 vk_graphics_pipeline_create_info_.pStages = vk_pipeline_shader_stage_create_info_;
50 vk_graphics_pipeline_create_info_.pInputAssemblyState =
51 &vk_pipeline_input_assembly_state_create_info_;
52 vk_graphics_pipeline_create_info_.pVertexInputState =
53 &vk_pipeline_vertex_input_state_create_info_;
54 vk_graphics_pipeline_create_info_.pRasterizationState =
55 &vk_pipeline_rasterization_state_create_info_;
56 vk_graphics_pipeline_create_info_.pDynamicState = &vk_pipeline_dynamic_state_create_info_;
57 vk_graphics_pipeline_create_info_.pViewportState = &vk_pipeline_viewport_state_create_info_;
58 vk_graphics_pipeline_create_info_.pMultisampleState =
59 &vk_pipeline_multisample_state_create_info_;
60 vk_graphics_pipeline_create_info_.pColorBlendState = &vk_pipeline_color_blend_state_create_info_;
63 vk_pipeline_rendering_create_info_ = {};
64 vk_pipeline_rendering_create_info_.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO;
68 vk_pipeline_shader_stage_create_info_[
i].sType =
69 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
70 vk_pipeline_shader_stage_create_info_[
i].pNext =
nullptr;
71 vk_pipeline_shader_stage_create_info_[
i].flags = 0;
72 vk_pipeline_shader_stage_create_info_[
i].module = VK_NULL_HANDLE;
73 vk_pipeline_shader_stage_create_info_[
i].pName =
"main";
75 vk_pipeline_shader_stage_create_info_[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
76 vk_pipeline_shader_stage_create_info_[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
77 vk_pipeline_shader_stage_create_info_[2].stage = VK_SHADER_STAGE_GEOMETRY_BIT;
80 vk_pipeline_input_assembly_state_create_info_ = {};
81 vk_pipeline_input_assembly_state_create_info_.sType =
82 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
85 vk_pipeline_vertex_input_state_create_info_ = {};
86 vk_pipeline_vertex_input_state_create_info_.sType =
87 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
90 vk_pipeline_rasterization_state_create_info_ = {};
91 vk_pipeline_rasterization_state_create_info_.sType =
92 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
93 vk_pipeline_rasterization_state_create_info_.lineWidth = 1.0f;
94 vk_pipeline_rasterization_state_create_info_.frontFace = VK_FRONT_FACE_CLOCKWISE;
95 vk_pipeline_rasterization_state_create_info_.pNext =
96 &vk_pipeline_rasterization_provoking_vertex_state_info_;
98 vk_pipeline_rasterization_provoking_vertex_state_info_ = {};
99 vk_pipeline_rasterization_provoking_vertex_state_info_.sType =
100 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT;
101 vk_pipeline_rasterization_provoking_vertex_state_info_.provokingVertexMode =
102 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT;
104 vk_dynamic_states_ = {
105 VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_LINE_WIDTH};
106 vk_pipeline_dynamic_state_create_info_ = {};
107 vk_pipeline_dynamic_state_create_info_.sType =
108 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
110 vk_pipeline_viewport_state_create_info_ = {};
111 vk_pipeline_viewport_state_create_info_.sType =
112 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
115 vk_pipeline_multisample_state_create_info_ = {};
116 vk_pipeline_multisample_state_create_info_.sType =
117 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
118 vk_pipeline_multisample_state_create_info_.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT;
119 vk_pipeline_multisample_state_create_info_.minSampleShading = 1.0f;
122 vk_pipeline_color_blend_state_create_info_ = {};
123 vk_pipeline_color_blend_state_create_info_.sType =
124 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
125 vk_pipeline_color_blend_attachment_state_template_.colorWriteMask = VK_COLOR_COMPONENT_R_BIT |
126 VK_COLOR_COMPONENT_G_BIT |
127 VK_COLOR_COMPONENT_B_BIT |
128 VK_COLOR_COMPONENT_A_BIT;
130 vk_pipeline_depth_stencil_state_create_info_ = {};
131 vk_pipeline_depth_stencil_state_create_info_.sType =
132 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
135 vk_specialization_info_.mapEntryCount = 0;
136 vk_specialization_info_.pMapEntries =
nullptr;
137 vk_specialization_info_.dataSize = 0;
138 vk_specialization_info_.pData =
nullptr;
140 vk_push_constant_range_.stageFlags = 0;
141 vk_push_constant_range_.offset = 0;
142 vk_push_constant_range_.size = 0;
232 const bool is_static_shader,
233 VkPipeline vk_pipeline_base)
235 std::scoped_lock
lock(mutex_);
237 const VkPipeline *found_pipeline = graphic_pipelines_.lookup_ptr(graphics_info);
238 if (found_pipeline) {
239 VkPipeline
result = *found_pipeline;
245 VkSpecializationInfo *specialization_info = specialization_info_update(
249 vk_graphics_pipeline_create_info_.stageCount =
251 vk_pipeline_shader_stage_create_info_[0].module =
253 vk_pipeline_shader_stage_create_info_[0].pSpecializationInfo = specialization_info;
254 vk_pipeline_shader_stage_create_info_[1].module =
256 vk_pipeline_shader_stage_create_info_[1].pSpecializationInfo = specialization_info;
257 vk_pipeline_shader_stage_create_info_[2].module =
259 vk_pipeline_shader_stage_create_info_[2].pSpecializationInfo = specialization_info;
263 vk_pipeline_input_assembly_state_create_info_.primitiveRestartEnable =
265 VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
266 VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
267 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
268 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY) ?
271 vk_pipeline_vertex_input_state_create_info_.pVertexAttributeDescriptions =
273 vk_pipeline_vertex_input_state_create_info_.vertexAttributeDescriptionCount =
275 vk_pipeline_vertex_input_state_create_info_.pVertexBindingDescriptions =
277 vk_pipeline_vertex_input_state_create_info_.vertexBindingDescriptionCount =
281 vk_pipeline_rasterization_state_create_info_.frontFace = graphics_info.
state.
invert_facing ?
282 VK_FRONT_FACE_COUNTER_CLOCKWISE :
283 VK_FRONT_FACE_CLOCKWISE;
287 vk_pipeline_rasterization_state_create_info_.depthBiasEnable = VK_TRUE;
288 vk_pipeline_rasterization_state_create_info_.depthBiasSlopeFactor = 2.0f;
289 vk_pipeline_rasterization_state_create_info_.depthBiasConstantFactor = 1.0f;
290 vk_pipeline_rasterization_state_create_info_.depthBiasClamp = 0.0f;
293 vk_pipeline_rasterization_state_create_info_.depthBiasEnable = VK_FALSE;
295 vk_pipeline_rasterization_state_create_info_.frontFace = graphics_info.
state.
invert_facing ?
296 VK_FRONT_FACE_COUNTER_CLOCKWISE :
297 VK_FRONT_FACE_CLOCKWISE;
298 vk_pipeline_rasterization_provoking_vertex_state_info_.provokingVertexMode =
300 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT :
301 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT;
305 VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
306 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
307 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP);
308 vk_pipeline_dynamic_state_create_info_.dynamicStateCount = is_line_topology ?
309 vk_dynamic_states_.size() :
310 vk_dynamic_states_.size() - 1;
311 vk_pipeline_dynamic_state_create_info_.pDynamicStates = vk_dynamic_states_.data();
314 vk_pipeline_viewport_state_create_info_.pViewports =
nullptr;
315 vk_pipeline_viewport_state_create_info_.viewportCount =
317 vk_pipeline_viewport_state_create_info_.pScissors =
nullptr;
318 vk_pipeline_viewport_state_create_info_.scissorCount =
324 VkPipelineColorBlendStateCreateInfo &cb = vk_pipeline_color_blend_state_create_info_;
325 VkPipelineColorBlendAttachmentState &att_state =
326 vk_pipeline_color_blend_attachment_state_template_;
328 att_state.blendEnable = VK_TRUE;
329 att_state.alphaBlendOp = VK_BLEND_OP_ADD;
330 att_state.colorBlendOp = VK_BLEND_OP_ADD;
331 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_DST_ALPHA;
332 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
333 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
334 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
335 att_state.colorWriteMask = 0;
336 cb.blendConstants[0] = 1.0f;
337 cb.blendConstants[1] = 1.0f;
338 cb.blendConstants[2] = 1.0f;
339 cb.blendConstants[3] = 1.0f;
344 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
345 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
346 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
347 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
351 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
352 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
353 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
354 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
358 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
359 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
360 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
361 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
366 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
367 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
368 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
369 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
373 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_DST_COLOR;
374 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO;
375 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_DST_ALPHA;
376 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
380 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR;
381 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO;
382 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
383 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
387 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
388 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
389 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
390 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
394 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA;
395 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
396 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
397 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA;
401 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA;
402 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE;
403 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA;
404 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
408 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ONE;
409 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_SRC1_COLOR;
410 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ONE;
411 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_SRC1_ALPHA;
415 att_state.srcColorBlendFactor = VK_BLEND_FACTOR_ZERO;
416 att_state.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
417 att_state.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO;
418 att_state.dstAlphaBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;
423 att_state.alphaBlendOp = VK_BLEND_OP_REVERSE_SUBTRACT;
424 att_state.colorBlendOp = VK_BLEND_OP_REVERSE_SUBTRACT;
427 att_state.alphaBlendOp = VK_BLEND_OP_ADD;
428 att_state.colorBlendOp = VK_BLEND_OP_ADD;
432 att_state.blendEnable = VK_TRUE;
435 att_state.blendEnable = VK_FALSE;
440 att_state.colorWriteMask |= VK_COLOR_COMPONENT_R_BIT;
443 att_state.colorWriteMask |= VK_COLOR_COMPONENT_G_BIT;
446 att_state.colorWriteMask |= VK_COLOR_COMPONENT_B_BIT;
449 att_state.colorWriteMask |= VK_COLOR_COMPONENT_A_BIT;
454 cb.logicOpEnable = VK_TRUE;
455 cb.logicOp = VK_LOGIC_OP_XOR;
458 vk_pipeline_color_blend_attachment_states_.clear();
459 vk_pipeline_color_blend_attachment_states_.append_n_times(
460 vk_pipeline_color_blend_attachment_state_template_,
462 vk_pipeline_color_blend_state_create_info_.attachmentCount =
463 vk_pipeline_color_blend_attachment_states_.size();
464 vk_pipeline_color_blend_state_create_info_.pAttachments =
465 vk_pipeline_color_blend_attachment_states_.data();
469 vk_graphics_pipeline_create_info_.pDepthStencilState =
470 &vk_pipeline_depth_stencil_state_create_info_;
471 vk_pipeline_depth_stencil_state_create_info_.depthWriteEnable =
474 vk_pipeline_depth_stencil_state_create_info_.depthTestEnable = VK_TRUE;
477 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_LESS;
480 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL;
483 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_EQUAL;
486 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_GREATER;
489 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp =
490 VK_COMPARE_OP_GREATER_OR_EQUAL;
493 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_ALWAYS;
496 vk_pipeline_depth_stencil_state_create_info_.depthTestEnable = VK_FALSE;
497 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_NEVER;
503 vk_graphics_pipeline_create_info_.pDepthStencilState =
504 &vk_pipeline_depth_stencil_state_create_info_;
508 vk_pipeline_depth_stencil_state_create_info_.stencilTestEnable = VK_TRUE;
509 vk_pipeline_depth_stencil_state_create_info_.front.compareOp = VK_COMPARE_OP_NOT_EQUAL;
512 vk_pipeline_depth_stencil_state_create_info_.stencilTestEnable = VK_TRUE;
513 vk_pipeline_depth_stencil_state_create_info_.front.compareOp = VK_COMPARE_OP_EQUAL;
516 vk_pipeline_depth_stencil_state_create_info_.stencilTestEnable = VK_TRUE;
517 vk_pipeline_depth_stencil_state_create_info_.front.compareOp = VK_COMPARE_OP_ALWAYS;
520 vk_pipeline_depth_stencil_state_create_info_.stencilTestEnable = VK_FALSE;
521 vk_pipeline_depth_stencil_state_create_info_.front.compareOp = VK_COMPARE_OP_ALWAYS;
525 vk_pipeline_depth_stencil_state_create_info_.front.compareMask =
527 vk_pipeline_depth_stencil_state_create_info_.front.reference =
529 vk_pipeline_depth_stencil_state_create_info_.front.writeMask =
534 vk_pipeline_depth_stencil_state_create_info_.front.failOp = VK_STENCIL_OP_KEEP;
535 vk_pipeline_depth_stencil_state_create_info_.front.passOp = VK_STENCIL_OP_REPLACE;
536 vk_pipeline_depth_stencil_state_create_info_.front.depthFailOp = VK_STENCIL_OP_KEEP;
537 vk_pipeline_depth_stencil_state_create_info_.back =
538 vk_pipeline_depth_stencil_state_create_info_.front;
542 vk_pipeline_depth_stencil_state_create_info_.front.failOp = VK_STENCIL_OP_KEEP;
543 vk_pipeline_depth_stencil_state_create_info_.front.passOp =
544 VK_STENCIL_OP_DECREMENT_AND_WRAP;
545 vk_pipeline_depth_stencil_state_create_info_.front.depthFailOp = VK_STENCIL_OP_KEEP;
546 vk_pipeline_depth_stencil_state_create_info_.back =
547 vk_pipeline_depth_stencil_state_create_info_.front;
548 vk_pipeline_depth_stencil_state_create_info_.back.passOp =
549 VK_STENCIL_OP_INCREMENT_AND_WRAP;
553 vk_pipeline_depth_stencil_state_create_info_.front.failOp = VK_STENCIL_OP_KEEP;
554 vk_pipeline_depth_stencil_state_create_info_.front.passOp = VK_STENCIL_OP_KEEP;
555 vk_pipeline_depth_stencil_state_create_info_.front.depthFailOp =
556 VK_STENCIL_OP_INCREMENT_AND_WRAP;
557 vk_pipeline_depth_stencil_state_create_info_.back =
558 vk_pipeline_depth_stencil_state_create_info_.front;
559 vk_pipeline_depth_stencil_state_create_info_.back.depthFailOp =
560 VK_STENCIL_OP_DECREMENT_AND_WRAP;
565 vk_pipeline_depth_stencil_state_create_info_.front.failOp = VK_STENCIL_OP_KEEP;
566 vk_pipeline_depth_stencil_state_create_info_.front.passOp = VK_STENCIL_OP_KEEP;
567 vk_pipeline_depth_stencil_state_create_info_.front.depthFailOp = VK_STENCIL_OP_KEEP;
568 vk_pipeline_depth_stencil_state_create_info_.back =
569 vk_pipeline_depth_stencil_state_create_info_.front;
575 vk_pipeline_rendering_create_info_.depthAttachmentFormat =
577 vk_pipeline_rendering_create_info_.stencilAttachmentFormat =
579 vk_pipeline_rendering_create_info_.colorAttachmentCount =
581 vk_pipeline_rendering_create_info_.pColorAttachmentFormats =
587 vk_graphics_pipeline_create_info_.basePipelineHandle = vk_pipeline_base;
593 vk_graphics_pipeline_create_info_.flags |= VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT;
596 VkPipeline pipeline = VK_NULL_HANDLE;
597 vkCreateGraphicsPipelines(device.
vk_handle(),
598 is_static_shader ? vk_pipeline_cache_static_ :
599 vk_pipeline_cache_non_static_,
601 &vk_graphics_pipeline_create_info_,
604 graphic_pipelines_.add(graphics_info, pipeline);
607 specialization_info_reset();
608 vk_graphics_pipeline_create_info_.flags = 0;
609 vk_graphics_pipeline_create_info_.stageCount = 0;
610 vk_graphics_pipeline_create_info_.layout = VK_NULL_HANDLE;
611 vk_graphics_pipeline_create_info_.basePipelineHandle = VK_NULL_HANDLE;
612 for (VkPipelineShaderStageCreateInfo &info :
615 info.module = VK_NULL_HANDLE;
616 info.pSpecializationInfo =
nullptr;
618 vk_pipeline_input_assembly_state_create_info_.topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
619 vk_pipeline_input_assembly_state_create_info_.primitiveRestartEnable = VK_TRUE;
620 vk_pipeline_vertex_input_state_create_info_.pVertexAttributeDescriptions =
nullptr;
621 vk_pipeline_vertex_input_state_create_info_.vertexAttributeDescriptionCount = 0;
622 vk_pipeline_vertex_input_state_create_info_.pVertexBindingDescriptions =
nullptr;
623 vk_pipeline_vertex_input_state_create_info_.vertexBindingDescriptionCount = 0;
624 vk_pipeline_rasterization_state_create_info_.frontFace = VK_FRONT_FACE_CLOCKWISE;
625 vk_pipeline_rasterization_state_create_info_.cullMode = VK_CULL_MODE_NONE;
626 vk_pipeline_rasterization_state_create_info_.depthBiasEnable = VK_FALSE;
627 vk_pipeline_rasterization_state_create_info_.depthBiasSlopeFactor = 0.0f;
628 vk_pipeline_rasterization_state_create_info_.depthBiasConstantFactor = 0.0f;
629 vk_pipeline_rasterization_state_create_info_.depthBiasClamp = 0.0f;
630 vk_pipeline_rasterization_state_create_info_.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
631 vk_pipeline_rasterization_provoking_vertex_state_info_.provokingVertexMode =
632 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT;
633 vk_pipeline_viewport_state_create_info_.pScissors =
nullptr;
634 vk_pipeline_viewport_state_create_info_.scissorCount = 0;
635 vk_pipeline_viewport_state_create_info_.pViewports =
nullptr;
636 vk_pipeline_viewport_state_create_info_.viewportCount = 0;
637 vk_pipeline_color_blend_state_create_info_.attachmentCount = 0;
638 vk_pipeline_color_blend_state_create_info_.logicOpEnable = VK_FALSE;
639 vk_pipeline_color_blend_state_create_info_.pAttachments =
nullptr;
640 vk_pipeline_rendering_create_info_.colorAttachmentCount = 0;
641 vk_pipeline_rendering_create_info_.depthAttachmentFormat = VK_FORMAT_UNDEFINED;
642 vk_pipeline_rendering_create_info_.pColorAttachmentFormats =
nullptr;
643 vk_pipeline_rendering_create_info_.stencilAttachmentFormat = VK_FORMAT_UNDEFINED;
644 vk_pipeline_depth_stencil_state_create_info_.depthTestEnable = VK_FALSE;
645 vk_pipeline_depth_stencil_state_create_info_.depthWriteEnable = VK_FALSE;
646 vk_pipeline_depth_stencil_state_create_info_.depthCompareOp = VK_COMPARE_OP_NEVER;
647 vk_pipeline_depth_stencil_state_create_info_.stencilTestEnable = VK_FALSE;
648 vk_pipeline_depth_stencil_state_create_info_.front = {};
649 vk_pipeline_depth_stencil_state_create_info_.back = {};
650 vk_graphics_pipeline_create_info_.pDepthStencilState =
nullptr;