nir/zink: fix gs emulation xfb_info sizing
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 7 Aug 2023 18:18:56 +0000 (14:18 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 15 Aug 2023 11:54:05 +0000 (11:54 +0000)
cc: mesa-stable

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24634>

src/compiler/nir/nir_passthrough_gs.c
src/gallium/drivers/zink/zink_compiler.c

index 4c37866..6c0fea9 100644 (file)
@@ -142,7 +142,7 @@ nir_create_passthrough_gs(const nir_shader_compiler_options *options,
    nir->info.has_transform_feedback_varyings = prev_stage->info.has_transform_feedback_varyings;
    memcpy(nir->info.xfb_stride, prev_stage->info.xfb_stride, sizeof(prev_stage->info.xfb_stride));
    if (prev_stage->xfb_info) {
-      nir->xfb_info = mem_dup(prev_stage->xfb_info, sizeof(nir_xfb_info));
+      nir->xfb_info = mem_dup(prev_stage->xfb_info, nir_xfb_info_size(prev_stage->xfb_info->output_count));
    }
 
    bool handle_flat = nir->info.gs.output_primitive == MESA_PRIM_LINE_STRIP &&
index 31a6247..1653c0f 100644 (file)
@@ -1214,7 +1214,7 @@ zink_create_quads_emulation_gs(const nir_shader_compiler_options *options,
    nir->info.has_transform_feedback_varyings = prev_stage->info.has_transform_feedback_varyings;
    memcpy(nir->info.xfb_stride, prev_stage->info.xfb_stride, sizeof(prev_stage->info.xfb_stride));
    if (prev_stage->xfb_info) {
-      nir->xfb_info = mem_dup(prev_stage->xfb_info, sizeof(nir_xfb_info));
+      nir->xfb_info = mem_dup(prev_stage->xfb_info, nir_xfb_info_size(prev_stage->xfb_info->output_count));
    }
 
    nir_variable *in_vars[VARYING_SLOT_MAX];