@@ -257,37 +257,38 @@ void Compositor::render(Commands& cmds, u64 frame_index, u64 slot_index, bool ha
257257}
258258
259259static Slice<const VkDescriptorSetLayoutBinding> compositor_ds_layout () {
260- return Slice{ VkDescriptorSetLayoutBinding{
260+ static const VkDescriptorSetLayoutBinding binding {
261261 .binding = 0 ,
262262 .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
263263 .descriptorCount = 1 ,
264264 .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT,
265- }};
265+ };
266+ return Slice{&binding, 1 };
266267}
267268
268269static Pipeline::Info compositor_pipeline_info (Arc<Swapchain, Alloc>& swapchain,
269270 Descriptor_Set_Layout& layout, Shader& v,
270271 Shader& f) {
271272
272- static Array<VkPipelineShaderStageCreateInfo, 2 > stages;
273- stages[ 0 ] = {
274- .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
275- .stage = VK_SHADER_STAGE_VERTEX_BIT,
276- .module = v,
277- .pName = " main" ,
278- };
279- stages[ 1 ] = {
280- .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
281- .stage = VK_SHADER_STAGE_FRAGMENT_BIT,
282- .module = f,
283- .pName = " main" ,
284- };
285-
286- static VkPipelineVertexInputStateCreateInfo v_in_info = {
273+ static const auto stages =
274+ Array{VkPipelineShaderStageCreateInfo {
275+ .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
276+ .stage = VK_SHADER_STAGE_VERTEX_BIT,
277+ .module = v,
278+ .pName = " main" ,
279+ },
280+ VkPipelineShaderStageCreateInfo {
281+ .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
282+ .stage = VK_SHADER_STAGE_FRAGMENT_BIT,
283+ .module = f,
284+ .pName = " main" ,
285+ } };
286+
287+ static const VkPipelineVertexInputStateCreateInfo v_in_info = {
287288 .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
288289 };
289290
290- static VkPipelineInputAssemblyStateCreateInfo in_asm_info = {
291+ static const VkPipelineInputAssemblyStateCreateInfo in_asm_info = {
291292 .sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
292293 .topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
293294 .primitiveRestartEnable = VK_FALSE,
@@ -306,15 +307,15 @@ static Pipeline::Info compositor_pipeline_info(Arc<Swapchain, Alloc>& swapchain,
306307 viewport.height = static_cast <f32 >(extent.height );
307308 scissor.extent = extent;
308309
309- static VkPipelineViewportStateCreateInfo view_info = {
310+ static const VkPipelineViewportStateCreateInfo view_info = {
310311 .sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
311312 .viewportCount = 1 ,
312313 .pViewports = &viewport,
313314 .scissorCount = 1 ,
314315 .pScissors = &scissor,
315316 };
316317
317- static VkPipelineRasterizationStateCreateInfo raster_info = {
318+ static const VkPipelineRasterizationStateCreateInfo raster_info = {
318319 .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
319320 .depthClampEnable = VK_FALSE,
320321 .rasterizerDiscardEnable = VK_FALSE,
@@ -325,13 +326,13 @@ static Pipeline::Info compositor_pipeline_info(Arc<Swapchain, Alloc>& swapchain,
325326 .lineWidth = 1 .0f ,
326327 };
327328
328- static VkPipelineMultisampleStateCreateInfo msaa_info = {
329+ static const VkPipelineMultisampleStateCreateInfo msaa_info = {
329330 .sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
330331 .rasterizationSamples = VK_SAMPLE_COUNT_1_BIT,
331332 .sampleShadingEnable = VK_FALSE,
332333 };
333334
334- static VkPipelineColorBlendAttachmentState color_blend = {
335+ static const VkPipelineColorBlendAttachmentState color_blend = {
335336 .blendEnable = VK_TRUE,
336337 .srcColorBlendFactor = VK_BLEND_FACTOR_SRC_ALPHA,
337338 .dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
@@ -343,7 +344,7 @@ static Pipeline::Info compositor_pipeline_info(Arc<Swapchain, Alloc>& swapchain,
343344 VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT,
344345 };
345346
346- static VkPipelineColorBlendStateCreateInfo blend_info = {
347+ static const VkPipelineColorBlendStateCreateInfo blend_info = {
347348 .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
348349 .logicOpEnable = VK_FALSE,
349350 .logicOp = VK_LOGIC_OP_COPY,
@@ -354,7 +355,7 @@ static Pipeline::Info compositor_pipeline_info(Arc<Swapchain, Alloc>& swapchain,
354355 static VkFormat format = {};
355356 format = swapchain->format ();
356357
357- static VkPipelineRenderingCreateInfo dynamic_info = {
358+ static const VkPipelineRenderingCreateInfo dynamic_info = {
358359 .sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
359360 .colorAttachmentCount = 1 ,
360361 .pColorAttachmentFormats = &format,
@@ -379,7 +380,7 @@ static Pipeline::Info compositor_pipeline_info(Arc<Swapchain, Alloc>& swapchain,
379380 return Pipeline::Info{
380381 .push_constants = {},
381382 .descriptor_set_layouts = Slice{&layout_ref, 1 },
382- .info = Pipeline::VkCreateInfo{ move (pipeline_info)} ,
383+ .info = move (pipeline_info),
383384 };
384385}
385386
0 commit comments