From a86c710ce5869a55fb96498186f7dffc8e12c727 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 12 Apr 2023 12:57:13 -0400 Subject: [PATCH] mesa/st/program: don't init xfb info if there are no outputs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit this is almost certainly a failure case, but drivers still shouldn't get xfb info if there are no outputs affects: spec@glsl-1.50@execution@interface-blocks-api-access-members cc: mesa-stable Reviewed-by: Kenneth Graunke Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt | 3 --- src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt | 3 --- src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt | 3 --- src/mesa/state_tracker/st_program.c | 5 +++++ 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt b/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt index 52e3bf5..e9c7935 100644 --- a/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt @@ -690,9 +690,6 @@ spec@ext_transform_feedback@tessellation triangle_fan flat_first,Fail spec@ext_transform_feedback@tessellation quad_strip wireframe,Fail spec@ext_transform_feedback@tessellation quads wireframe,Fail -# ../src/gallium/drivers/zink/zink_compiler.c:1684: find_var_with_location_frac: Assertion `(int)location > 0' failed. -spec@glsl-1.50@execution@interface-blocks-api-access-members,Crash - spec@glsl-1.50@execution@primitive-id-no-gs-quad-strip,Fail spec@glsl-1.50@execution@primitive-id-no-gs-quads,Fail diff --git a/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt b/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt index ec09a9d..1603c84 100644 --- a/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt @@ -248,9 +248,6 @@ spec@glsl-1.10@execution@samplers@glsl-fs-shadow2d-clamp-z,Fail spec@glsl-1.20@compiler@invalid-vec4-array-to-vec3-array-conversion.vert,Fail -# ../src/gallium/drivers/zink/zink_compiler.c:1684: find_var_with_location_frac: Assertion `(int)location > 0' failed. -spec@glsl-1.50@execution@interface-blocks-api-access-members,Crash - spec@glsl-1.50@execution@primitive-id-no-gs-quad-strip,Fail spec@glsl-4.00@execution@conversion@frag-conversion-explicit-dmat2-mat2,Fail spec@glsl-4.00@execution@conversion@frag-conversion-explicit-dmat2x3-mat2x3,Fail diff --git a/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt b/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt index a1c8dd2..4421983 100644 --- a/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt @@ -247,9 +247,6 @@ spec@glsl-1.10@execution@samplers@glsl-fs-shadow2d-clamp-z,Fail spec@glsl-1.20@compiler@invalid-vec4-array-to-vec3-array-conversion.vert,Fail -# ../src/gallium/drivers/zink/zink_compiler.c:1684: find_var_with_location_frac: Assertion `(int)location > 0' failed. -spec@glsl-1.50@execution@interface-blocks-api-access-members,Crash - spec@glsl-1.50@execution@primitive-id-no-gs-quad-strip,Fail spec@glsl-4.00@execution@conversion@frag-conversion-explicit-dmat2-mat2,Fail spec@glsl-4.00@execution@conversion@frag-conversion-explicit-dmat2x3-mat2x3,Fail diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index e06e381..f2fa219 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -476,6 +476,11 @@ st_translate_stream_output_info(struct gl_program *prog) struct pipe_stream_output_info *so_info = &prog->state.stream_output; + if (!num_outputs) { + so_info->num_outputs = 0; + return; + } + for (unsigned i = 0; i < info->NumOutputs; i++) { so_info->output[i].register_index = output_mapping[info->Outputs[i].OutputRegister]; -- 2.7.4