@ -375,7 +375,7 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) {
views [ view_index + + ] = {
views [ view_index + + ] = {
. index = handle . first ,
. index = handle . first ,
. blacklist = blacklist ,
. blacklist = blacklist ,
. id = { } ,
. id = { }
} ;
} ;
}
}
} } ;
} } ;
@ -740,6 +740,12 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
? VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
? VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
: VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT ,
: VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT ,
} ;
} ;
VkPipelineRasterizationDepthClipStateCreateInfoEXT depth_clip {
. sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT ,
. pNext = nullptr ,
. flags = 0 ,
. depthClipEnable = VK_TRUE ,
} ;
if ( IsLine ( input_assembly_topology ) & & device . IsExtLineRasterizationSupported ( ) ) {
if ( IsLine ( input_assembly_topology ) & & device . IsExtLineRasterizationSupported ( ) ) {
line_state . pNext = std : : exchange ( rasterization_ci . pNext , & line_state ) ;
line_state . pNext = std : : exchange ( rasterization_ci . pNext , & line_state ) ;
}
}
@ -749,6 +755,9 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
if ( device . IsExtProvokingVertexSupported ( ) ) {
if ( device . IsExtProvokingVertexSupported ( ) ) {
provoking_vertex . pNext = std : : exchange ( rasterization_ci . pNext , & provoking_vertex ) ;
provoking_vertex . pNext = std : : exchange ( rasterization_ci . pNext , & provoking_vertex ) ;
}
}
if ( device . IsExtDepthClipControlSupported ( ) ) {
depth_clip . pNext = std : : exchange ( rasterization_ci . pNext , & depth_clip ) ;
}
const VkPipelineMultisampleStateCreateInfo multisample_ci {
const VkPipelineMultisampleStateCreateInfo multisample_ci {
. sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO ,
. sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO ,
@ -814,7 +823,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
. logicOp = static_cast < VkLogicOp > ( dynamic . logic_op . Value ( ) ) ,
. logicOp = static_cast < VkLogicOp > ( dynamic . logic_op . Value ( ) ) ,
. attachmentCount = static_cast < u32 > ( cb_attachments . size ( ) ) ,
. attachmentCount = static_cast < u32 > ( cb_attachments . size ( ) ) ,
. pAttachments = cb_attachments . data ( ) ,
. pAttachments = cb_attachments . data ( ) ,
. blendConstants = { } ,
. blendConstants = { }
} ;
} ;
static_vector < VkDynamicState , 28 > dynamic_states {
static_vector < VkDynamicState , 28 > dynamic_states {
VK_DYNAMIC_STATE_VIEWPORT , VK_DYNAMIC_STATE_SCISSOR ,
VK_DYNAMIC_STATE_VIEWPORT , VK_DYNAMIC_STATE_SCISSOR ,