OSDN Git Service

intel/vec4/gs: reset nr_pull_param if DUAL_INSTANCED compile failed.
authorDave Airlie <airlied@gmail.com>
Thu, 3 Aug 2017 03:48:40 +0000 (13:48 +1000)
committerAndres Gomez <agomez@igalia.com>
Sat, 19 Aug 2017 10:46:04 +0000 (13:46 +0300)
If dual object compile fails (as seems to happen with virgl a
fair bit, and does piglit even have any tests for it?), we end up
not restarting the pull params, so we call
vec4_visitor::move_uniform_array_access_to_pull_constant
a second time and it runs over the ends of the alloc.

Fixes: tests/spec/glsl-1.50/execution/geometry/max-input-components.shader_test
running inside virgl on ivybridge.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 271fa3a684ef0eefe99087c13d1abb099784163f)

src/intel/compiler/brw_vec4_gs_visitor.cpp

index 5fcd028..67d0139 100644 (file)
@@ -897,6 +897,7 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
             memcpy(prog_data->base.base.param, param,
                    sizeof(gl_constant_value*) * param_count);
             prog_data->base.base.nr_params = param_count;
+            prog_data->base.base.nr_pull_params = 0;
             ralloc_free(param);
          }
       }