nv2a/vk: Omit pipeline fragment shader when no color binding

This commit is contained in:
Matt Borgerson 2024-07-26 17:21:02 -07:00 committed by mborgerson
parent dd3bb50f11
commit fc803fe375
1 changed files with 16 additions and 15 deletions

View File

@ -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;