diff --git a/hw/xbox/nv2a/pgraph/vk/draw.c b/hw/xbox/nv2a/pgraph/vk/draw.c index ab3ff19f17..1fa5fba82c 100644 --- a/hw/xbox/nv2a/pgraph/vk/draw.c +++ b/hw/xbox/nv2a/pgraph/vk/draw.c @@ -746,6 +746,13 @@ static void create_pipeline(PGRAPHState *pg) int num_active_shader_stages = 0; VkPipelineShaderStageCreateInfo shader_stages[3]; + shader_stages[num_active_shader_stages++] = + (VkPipelineShaderStageCreateInfo){ + .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + .stage = VK_SHADER_STAGE_VERTEX_BIT, + .module = r->shader_binding->vertex->module, + .pName = "main", + }; if (r->shader_binding->geometry) { shader_stages[num_active_shader_stages++] = (VkPipelineShaderStageCreateInfo){ @@ -755,20 +762,15 @@ static void create_pipeline(PGRAPHState *pg) .pName = "main", }; } - shader_stages[num_active_shader_stages++] = - (VkPipelineShaderStageCreateInfo){ - .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, - .stage = VK_SHADER_STAGE_VERTEX_BIT, - .module = r->shader_binding->vertex->module, - .pName = "main", - }; - shader_stages[num_active_shader_stages++] = - (VkPipelineShaderStageCreateInfo){ - .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, - .stage = VK_SHADER_STAGE_FRAGMENT_BIT, - .module = r->shader_binding->fragment->module, - .pName = "main", - }; + if (r->color_binding) { + shader_stages[num_active_shader_stages++] = + (VkPipelineShaderStageCreateInfo){ + .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + .stage = VK_SHADER_STAGE_FRAGMENT_BIT, + .module = r->shader_binding->fragment->module, + .pName = "main", + }; + } VkPipelineVertexInputStateCreateInfo vertex_input = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, @@ -792,7 +794,6 @@ static void create_pipeline(PGRAPHState *pg) .scissorCount = 1, }; - void *rasterizer_next_struct = NULL; VkPipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_state;