diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index 3798952b507..23ac70524fd 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -640,7 +640,9 @@ nvk_vs_gen_header(struct nvk_shader *vs, struct nv50_ir_prog_info_out *info) } static int -nvk_gs_gen_header(struct nvk_shader *gs, struct nv50_ir_prog_info_out *info) +nvk_gs_gen_header(struct nvk_shader *gs, + const struct nir_shader *nir, + struct nv50_ir_prog_info_out *info) { gs->hdr[0] = 0x20061 | (4 << 10); @@ -649,15 +651,12 @@ nvk_gs_gen_header(struct nvk_shader *gs, struct nv50_ir_prog_info_out *info) switch (info->prop.gp.outputPrim) { case MESA_PRIM_POINTS: gs->hdr[3] = 0x01000000; - gs->hdr[0] |= 0xf0000000; break; case MESA_PRIM_LINE_STRIP: gs->hdr[3] = 0x06000000; - gs->hdr[0] |= 0x10000000; break; case MESA_PRIM_TRIANGLE_STRIP: gs->hdr[3] = 0x07000000; - gs->hdr[0] |= 0x10000000; break; default: assert(0); @@ -666,6 +665,8 @@ nvk_gs_gen_header(struct nvk_shader *gs, struct nv50_ir_prog_info_out *info) gs->hdr[4] = CLAMP(info->prop.gp.maxVertices, 1, 1024); + gs->hdr[0] |= nir->info.gs.active_stream_mask << 28; + return nvk_vtgp_gen_header(gs, info); } @@ -884,7 +885,7 @@ nvk_compile_nir(struct nvk_physical_device *device, nir_shader *nir, shader->fs.uses_sample_shading = nir->info.fs.uses_sample_shading; break; case PIPE_SHADER_GEOMETRY: - ret = nvk_gs_gen_header(shader, &info_out); + ret = nvk_gs_gen_header(shader, nir, &info_out); break; case PIPE_SHADER_COMPUTE: break;