From f2e07cbab9c472f9d307f0249339ef5409475a63 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Thu, 28 Sep 2023 11:21:45 -0500 Subject: [PATCH] nvk: Plumb through XFB info from NAK Part-of: --- src/nouveau/vulkan/nvk_shader.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index 72b861c9ffc..5c7269c30b0 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -1263,13 +1263,28 @@ nvk_compile_nir_with_nak(struct nvk_physical_device *pdev, case MESA_SHADER_VERTEX: case MESA_SHADER_TESS_EVAL: - case MESA_SHADER_GEOMETRY: + case MESA_SHADER_GEOMETRY: { shader->vs.clip_enable = BITFIELD_RANGE(0, nir->info.clip_distance_array_size); shader->vs.cull_enable = BITFIELD_RANGE(nir->info.clip_distance_array_size, nir->info.cull_distance_array_size); + + bool has_xfb = false; + for (unsigned b = 0; b < 4; b++) { + if (bin->info.xfb.attr_count[b] > 0) { + has_xfb = true; + break; + } + } + + if (has_xfb) { + shader->xfb = malloc(sizeof(*shader->xfb)); + STATIC_ASSERT(sizeof(*shader->xfb) == sizeof(bin->info.xfb)); + memcpy(shader->xfb, &bin->info.xfb, sizeof(*shader->xfb)); + } break; + } default: break;