diff options
Diffstat (limited to 'src/intel/compiler')
-rw-r--r-- | src/intel/compiler/brw_compiler.c | 17 | ||||
-rw-r--r-- | src/intel/compiler/brw_compiler.h | 34 | ||||
-rw-r--r-- | src/intel/compiler/brw_debug_recompile.c | 41 | ||||
-rw-r--r-- | src/intel/compiler/brw_fs.cpp | 19 | ||||
-rw-r--r-- | src/intel/compiler/brw_fs.h | 4 | ||||
-rw-r--r-- | src/intel/compiler/brw_fs_visitor.cpp | 27 | ||||
-rw-r--r-- | src/intel/compiler/brw_shader.cpp | 4 | ||||
-rw-r--r-- | src/intel/compiler/brw_vec4.cpp | 5 | ||||
-rw-r--r-- | src/intel/compiler/brw_vec4_gs_visitor.cpp | 4 | ||||
-rw-r--r-- | src/intel/compiler/brw_vec4_tcs.cpp | 6 | ||||
-rw-r--r-- | src/intel/compiler/brw_vec4_tes.cpp | 2 | ||||
-rw-r--r-- | src/intel/compiler/brw_vec4_vs_visitor.cpp | 4 |
12 files changed, 73 insertions, 94 deletions
diff --git a/src/intel/compiler/brw_compiler.c b/src/intel/compiler/brw_compiler.c index aacd9f2aca4..eb1f3808fbc 100644 --- a/src/intel/compiler/brw_compiler.c +++ b/src/intel/compiler/brw_compiler.c @@ -263,20 +263,3 @@ brw_prog_key_size(gl_shader_stage stage) assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_sizes)); return stage_sizes[stage]; } - -void -brw_prog_key_set_id(union brw_any_prog_key *key, - gl_shader_stage stage, - unsigned id) -{ - static const unsigned stage_offsets[] = { - offsetof(struct brw_vs_prog_key, program_string_id), - offsetof(struct brw_tcs_prog_key, program_string_id), - offsetof(struct brw_tes_prog_key, program_string_id), - offsetof(struct brw_gs_prog_key, program_string_id), - offsetof(struct brw_wm_prog_key, program_string_id), - offsetof(struct brw_cs_prog_key, program_string_id), - }; - assert((int)stage >= 0 && stage < ARRAY_SIZE(stage_offsets)); - *(unsigned*)((uint8_t*)key + stage_offsets[stage]) = id; -} diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index 3c109c504b1..8f8cca79deb 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -203,6 +203,12 @@ struct brw_sampler_prog_key_data { float scale_factors[32]; }; +struct brw_base_prog_key { + unsigned program_string_id; + + struct brw_sampler_prog_key_data tex; +}; + /** * The VF can't natively handle certain types of attributes, such as GL_FIXED * or most 10_10_10_2 types. These flags enable various VS workarounds to @@ -225,7 +231,7 @@ struct brw_sampler_prog_key_data { /** The program key for Vertex Shaders. */ struct brw_vs_prog_key { - unsigned program_string_id; + struct brw_base_prog_key base; /** * Per-attribute workaround flags @@ -263,14 +269,12 @@ struct brw_vs_prog_key { * the VUE, even if they aren't written by the vertex shader. */ uint8_t point_coord_replace; - - struct brw_sampler_prog_key_data tex; }; /** The program key for Tessellation Control Shaders. */ struct brw_tcs_prog_key { - unsigned program_string_id; + struct brw_base_prog_key base; GLenum tes_primitive_mode; @@ -283,30 +287,24 @@ struct brw_tcs_prog_key uint64_t outputs_written; bool quads_workaround; - - struct brw_sampler_prog_key_data tex; }; /** The program key for Tessellation Evaluation Shaders. */ struct brw_tes_prog_key { - unsigned program_string_id; + struct brw_base_prog_key base; /** A bitfield of per-patch inputs read. */ uint32_t patch_inputs_read; /** A bitfield of per-vertex inputs read. */ uint64_t inputs_read; - - struct brw_sampler_prog_key_data tex; }; /** The program key for Geometry Shaders. */ struct brw_gs_prog_key { - unsigned program_string_id; - - struct brw_sampler_prog_key_data tex; + struct brw_base_prog_key base; }; enum brw_sf_primitive { @@ -394,6 +392,8 @@ enum brw_wm_aa_enable { /** The program key for Fragment/Pixel Shaders. */ struct brw_wm_prog_key { + struct brw_base_prog_key base; + /* Some collection of BRW_WM_IZ_* */ uint8_t iz_lookup; bool stats_wm:1; @@ -412,20 +412,17 @@ struct brw_wm_prog_key { uint8_t color_outputs_valid; uint64_t input_slots_valid; - unsigned program_string_id; GLenum alpha_test_func; /* < For Gen4/5 MRT alpha test */ float alpha_test_ref; - - struct brw_sampler_prog_key_data tex; }; struct brw_cs_prog_key { - uint32_t program_string_id; - struct brw_sampler_prog_key_data tex; + struct brw_base_prog_key base; }; /* brw_any_prog_key is any of the keys that map to an API stage */ union brw_any_prog_key { + struct brw_base_prog_key base; struct brw_vs_prog_key vs; struct brw_tcs_prog_key tcs; struct brw_tes_prog_key tes; @@ -1360,7 +1357,8 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, void brw_debug_key_recompile(const struct brw_compiler *c, void *log, gl_shader_stage stage, - const void *old_key, const void *key); + const struct brw_base_prog_key *old_key, + const struct brw_base_prog_key *key); static inline uint32_t encode_slm_size(unsigned gen, uint32_t bytes) diff --git a/src/intel/compiler/brw_debug_recompile.c b/src/intel/compiler/brw_debug_recompile.c index c9d9296b8fd..8d561a2bded 100644 --- a/src/intel/compiler/brw_debug_recompile.c +++ b/src/intel/compiler/brw_debug_recompile.c @@ -86,12 +86,20 @@ debug_sampler_recompile(const struct brw_compiler *c, void *log, return found; } +static bool +debug_base_recompile(const struct brw_compiler *c, void *log, + const struct brw_base_prog_key *old_key, + const struct brw_base_prog_key *key) +{ + return debug_sampler_recompile(c, log, &old_key->tex, &key->tex); +} + static void debug_vs_recompile(const struct brw_compiler *c, void *log, const struct brw_vs_prog_key *old_key, const struct brw_vs_prog_key *key) { - bool found = debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + bool found = debug_base_recompile(c, log, &old_key->base, &key->base); for (unsigned i = 0; i < VERT_ATTRIB_MAX; i++) { found |= check("vertex attrib w/a flags", gl_attrib_wa_flags[i]); @@ -112,7 +120,7 @@ debug_tcs_recompile(const struct brw_compiler *c, void *log, const struct brw_tcs_prog_key *old_key, const struct brw_tcs_prog_key *key) { - bool found = debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + bool found = debug_base_recompile(c, log, &old_key->base, &key->base); found |= check("input vertices", input_vertices); found |= check("outputs written", outputs_written); @@ -130,7 +138,7 @@ debug_tes_recompile(const struct brw_compiler *c, void *log, const struct brw_tes_prog_key *old_key, const struct brw_tes_prog_key *key) { - bool found = debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + bool found = debug_base_recompile(c, log, &old_key->base, &key->base); found |= check("inputs read", inputs_read); found |= check("patch inputs read", patch_inputs_read); @@ -145,7 +153,7 @@ debug_gs_recompile(const struct brw_compiler *c, void *log, const struct brw_gs_prog_key *old_key, const struct brw_gs_prog_key *key) { - bool found = debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + bool found = debug_base_recompile(c, log, &old_key->base, &key->base); if (!found) { c->shader_perf_log(log, " something else\n"); @@ -179,7 +187,7 @@ debug_fs_recompile(const struct brw_compiler *c, void *log, found |= check("mrt alpha test function", alpha_test_func); found |= check("mrt alpha test reference value", alpha_test_ref); - found |= debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + found |= debug_base_recompile(c, log, &old_key->base, &key->base); if (!found) { c->shader_perf_log(log, " something else\n"); @@ -191,7 +199,7 @@ debug_cs_recompile(const struct brw_compiler *c, void *log, const struct brw_cs_prog_key *old_key, const struct brw_cs_prog_key *key) { - bool found = debug_sampler_recompile(c, log, &old_key->tex, &key->tex); + bool found = debug_base_recompile(c, log, &old_key->base, &key->base); if (!found) { c->shader_perf_log(log, " something else\n"); @@ -201,7 +209,8 @@ debug_cs_recompile(const struct brw_compiler *c, void *log, void brw_debug_key_recompile(const struct brw_compiler *c, void *log, gl_shader_stage stage, - const void *old_key, const void *key) + const struct brw_base_prog_key *old_key, + const struct brw_base_prog_key *key) { if (!old_key) { c->shader_perf_log(log, " No previous compile found...\n"); @@ -210,22 +219,28 @@ brw_debug_key_recompile(const struct brw_compiler *c, void *log, switch (stage) { case MESA_SHADER_VERTEX: - debug_vs_recompile(c, log, old_key, key); + debug_vs_recompile(c, log, (const struct brw_vs_prog_key *)old_key, + (const struct brw_vs_prog_key *)key); break; case MESA_SHADER_TESS_CTRL: - debug_tcs_recompile(c, log, old_key, key); + debug_tcs_recompile(c, log, (const struct brw_tcs_prog_key *)old_key, + (const struct brw_tcs_prog_key *)key); break; case MESA_SHADER_TESS_EVAL: - debug_tes_recompile(c, log, old_key, key); + debug_tes_recompile(c, log, (const struct brw_tes_prog_key *)old_key, + (const struct brw_tes_prog_key *)key); break; case MESA_SHADER_GEOMETRY: - debug_gs_recompile(c, log, old_key, key); + debug_gs_recompile(c, log, (const struct brw_gs_prog_key *)old_key, + (const struct brw_gs_prog_key *)key); break; case MESA_SHADER_FRAGMENT: - debug_fs_recompile(c, log, old_key, key); + debug_fs_recompile(c, log, (const struct brw_wm_prog_key *)old_key, + (const struct brw_wm_prog_key *)key); break; case MESA_SHADER_COMPUTE: - debug_cs_recompile(c, log, old_key, key); + debug_cs_recompile(c, log, (const struct brw_cs_prog_key *)old_key, + (const struct brw_cs_prog_key *)key); break; default: break; diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index bd0ac1a0718..a9273ebef2d 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -7961,7 +7961,7 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data, { const struct gen_device_info *devinfo = compiler->devinfo; - brw_nir_apply_sampler_key(shader, compiler, &key->tex, true); + brw_nir_apply_sampler_key(shader, compiler, &key->base.tex, true); brw_nir_lower_fs_inputs(shader, devinfo, key); brw_nir_lower_fs_outputs(shader); @@ -8003,7 +8003,7 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data, cfg_t *simd8_cfg = NULL, *simd16_cfg = NULL, *simd32_cfg = NULL; - fs_visitor v8(compiler, log_data, mem_ctx, key, + fs_visitor v8(compiler, log_data, mem_ctx, &key->base, &prog_data->base, prog, shader, 8, shader_time_index8); if (!v8.run_fs(allow_spilling, false /* do_rep_send */)) { @@ -8020,7 +8020,7 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data, if (v8.max_dispatch_width >= 16 && likely(!(INTEL_DEBUG & DEBUG_NO16) || use_rep_send)) { /* Try a SIMD16 compile */ - fs_visitor v16(compiler, log_data, mem_ctx, key, + fs_visitor v16(compiler, log_data, mem_ctx, &key->base, &prog_data->base, prog, shader, 16, shader_time_index16); v16.import_uniforms(&v8); @@ -8040,7 +8040,7 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data, compiler->devinfo->gen >= 6 && unlikely(INTEL_DEBUG & DEBUG_DO32)) { /* Try a SIMD32 compile */ - fs_visitor v32(compiler, log_data, mem_ctx, key, + fs_visitor v32(compiler, log_data, mem_ctx, &key->base, &prog_data->base, prog, shader, 32, shader_time_index32); v32.import_uniforms(&v8); @@ -8222,7 +8222,7 @@ compile_cs_to_nir(const struct brw_compiler *compiler, unsigned dispatch_width) { nir_shader *shader = nir_shader_clone(mem_ctx, src_shader); - brw_nir_apply_sampler_key(shader, compiler, &key->tex, true); + brw_nir_apply_sampler_key(shader, compiler, &key->base.tex, true); NIR_PASS_V(shader, brw_nir_lower_cs_intrinsics, dispatch_width); @@ -8267,7 +8267,8 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, if (min_dispatch_width <= 8) { nir_shader *nir8 = compile_cs_to_nir(compiler, mem_ctx, key, src_shader, 8); - v8 = new fs_visitor(compiler, log_data, mem_ctx, key, &prog_data->base, + v8 = new fs_visitor(compiler, log_data, mem_ctx, &key->base, + &prog_data->base, NULL, /* Never used in core profile */ nir8, 8, shader_time_index); if (!v8->run_cs(min_dispatch_width)) { @@ -8288,7 +8289,8 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, /* Try a SIMD16 compile */ nir_shader *nir16 = compile_cs_to_nir(compiler, mem_ctx, key, src_shader, 16); - v16 = new fs_visitor(compiler, log_data, mem_ctx, key, &prog_data->base, + v16 = new fs_visitor(compiler, log_data, mem_ctx, &key->base, + &prog_data->base, NULL, /* Never used in core profile */ nir16, 16, shader_time_index); if (v8) @@ -8321,7 +8323,8 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data, /* Try a SIMD32 compile */ nir_shader *nir32 = compile_cs_to_nir(compiler, mem_ctx, key, src_shader, 32); - v32 = new fs_visitor(compiler, log_data, mem_ctx, key, &prog_data->base, + v32 = new fs_visitor(compiler, log_data, mem_ctx, &key->base, + &prog_data->base, NULL, /* Never used in core profile */ nir32, 32, shader_time_index); if (v8) diff --git a/src/intel/compiler/brw_fs.h b/src/intel/compiler/brw_fs.h index d93fb29d85d..4e7b5781827 100644 --- a/src/intel/compiler/brw_fs.h +++ b/src/intel/compiler/brw_fs.h @@ -62,7 +62,7 @@ class fs_visitor : public backend_shader public: fs_visitor(const struct brw_compiler *compiler, void *log_data, void *mem_ctx, - const void *key, + const brw_base_prog_key *key, struct brw_stage_prog_data *prog_data, struct gl_program *prog, const nir_shader *shader, @@ -304,7 +304,7 @@ public: void dump_instruction(backend_instruction *inst); void dump_instruction(backend_instruction *inst, FILE *file); - const void *const key; + const brw_base_prog_key *const key; const struct brw_sampler_prog_key_data *key_tex; struct brw_gs_compile *gs_compile; diff --git a/src/intel/compiler/brw_fs_visitor.cpp b/src/intel/compiler/brw_fs_visitor.cpp index 6509868f1c3..eb23b4087d0 100644 --- a/src/intel/compiler/brw_fs_visitor.cpp +++ b/src/intel/compiler/brw_fs_visitor.cpp @@ -969,7 +969,7 @@ fs_visitor::emit_barrier() fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data, void *mem_ctx, - const void *key, + const brw_base_prog_key *key, struct brw_stage_prog_data *prog_data, struct gl_program *prog, const nir_shader *shader, @@ -994,7 +994,7 @@ fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data, int shader_time_index) : backend_shader(compiler, log_data, mem_ctx, shader, &prog_data->base.base), - key(&c->key), gs_compile(c), + key(&c->key.base), gs_compile(c), prog_data(&prog_data->base.base), prog(NULL), dispatch_width(8), shader_time_index(shader_time_index), @@ -1007,28 +1007,7 @@ fs_visitor::fs_visitor(const struct brw_compiler *compiler, void *log_data, void fs_visitor::init() { - switch (stage) { - case MESA_SHADER_FRAGMENT: - key_tex = &((const brw_wm_prog_key *) key)->tex; - break; - case MESA_SHADER_VERTEX: - key_tex = &((const brw_vs_prog_key *) key)->tex; - break; - case MESA_SHADER_TESS_CTRL: - key_tex = &((const brw_tcs_prog_key *) key)->tex; - break; - case MESA_SHADER_TESS_EVAL: - key_tex = &((const brw_tes_prog_key *) key)->tex; - break; - case MESA_SHADER_GEOMETRY: - key_tex = &((const brw_gs_prog_key *) key)->tex; - break; - case MESA_SHADER_COMPUTE: - key_tex = &((const brw_cs_prog_key*) key)->tex; - break; - default: - unreachable("unhandled shader stage"); - } + this->key_tex = &key->tex; this->max_dispatch_width = 32; this->prog_data = this->stage_prog_data; diff --git a/src/intel/compiler/brw_shader.cpp b/src/intel/compiler/brw_shader.cpp index 643765c1b22..8403f19b831 100644 --- a/src/intel/compiler/brw_shader.cpp +++ b/src/intel/compiler/brw_shader.cpp @@ -1244,7 +1244,7 @@ brw_compile_tes(const struct brw_compiler *compiler, nir->info.inputs_read = key->inputs_read; nir->info.patch_inputs_read = key->patch_inputs_read; - brw_nir_apply_sampler_key(nir, compiler, &key->tex, is_scalar); + brw_nir_apply_sampler_key(nir, compiler, &key->base.tex, is_scalar); brw_nir_lower_tes_inputs(nir, input_vue_map); brw_nir_lower_vue_outputs(nir); brw_postprocess_nir(nir, compiler, is_scalar); @@ -1322,7 +1322,7 @@ brw_compile_tes(const struct brw_compiler *compiler, } if (is_scalar) { - fs_visitor v(compiler, log_data, mem_ctx, (void *) key, + fs_visitor v(compiler, log_data, mem_ctx, &key->base, &prog_data->base.base, NULL, nir, 8, shader_time_index, input_vue_map); if (!v.run_tes()) { diff --git a/src/intel/compiler/brw_vec4.cpp b/src/intel/compiler/brw_vec4.cpp index 26e2a0ecf5b..16ae576de37 100644 --- a/src/intel/compiler/brw_vec4.cpp +++ b/src/intel/compiler/brw_vec4.cpp @@ -2845,7 +2845,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data, char **error_str) { const bool is_scalar = compiler->scalar_stage[MESA_SHADER_VERTEX]; - brw_nir_apply_sampler_key(shader, compiler, &key->tex, is_scalar); + brw_nir_apply_sampler_key(shader, compiler, &key->base.tex, is_scalar); const unsigned *assembly = NULL; @@ -2961,7 +2961,8 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data, if (is_scalar) { prog_data->base.dispatch_mode = DISPATCH_MODE_SIMD8; - fs_visitor v(compiler, log_data, mem_ctx, key, &prog_data->base.base, + fs_visitor v(compiler, log_data, mem_ctx, &key->base, + &prog_data->base.base, NULL, /* prog; Only used for TEXTURE_RECTANGLE on gen < 8 */ shader, 8, shader_time_index); if (!v.run_vs()) { diff --git a/src/intel/compiler/brw_vec4_gs_visitor.cpp b/src/intel/compiler/brw_vec4_gs_visitor.cpp index 417daf1b493..208c0161657 100644 --- a/src/intel/compiler/brw_vec4_gs_visitor.cpp +++ b/src/intel/compiler/brw_vec4_gs_visitor.cpp @@ -44,7 +44,7 @@ vec4_gs_visitor::vec4_gs_visitor(const struct brw_compiler *compiler, void *mem_ctx, bool no_spills, int shader_time_index) - : vec4_visitor(compiler, log_data, &c->key.tex, + : vec4_visitor(compiler, log_data, &c->key.base.tex, &prog_data->base, shader, mem_ctx, no_spills, shader_time_index), c(c), @@ -639,7 +639,7 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data, &c.input_vue_map, inputs_read, shader->info.separate_shader); - brw_nir_apply_sampler_key(shader, compiler, &key->tex, is_scalar); + brw_nir_apply_sampler_key(shader, compiler, &key->base.tex, is_scalar); brw_nir_lower_vue_inputs(shader, &c.input_vue_map); brw_nir_lower_vue_outputs(shader); brw_postprocess_nir(shader, compiler, is_scalar); diff --git a/src/intel/compiler/brw_vec4_tcs.cpp b/src/intel/compiler/brw_vec4_tcs.cpp index 39df2d5054b..b8f2a3bde0a 100644 --- a/src/intel/compiler/brw_vec4_tcs.cpp +++ b/src/intel/compiler/brw_vec4_tcs.cpp @@ -42,7 +42,7 @@ vec4_tcs_visitor::vec4_tcs_visitor(const struct brw_compiler *compiler, void *mem_ctx, int shader_time_index, const struct brw_vue_map *input_vue_map) - : vec4_visitor(compiler, log_data, &key->tex, &prog_data->base, + : vec4_visitor(compiler, log_data, &key->base.tex, &prog_data->base, nir, mem_ctx, false, shader_time_index), input_vue_map(input_vue_map), key(key) { @@ -397,7 +397,7 @@ brw_compile_tcs(const struct brw_compiler *compiler, nir->info.outputs_written, nir->info.patch_outputs_written); - brw_nir_apply_sampler_key(nir, compiler, &key->tex, is_scalar); + brw_nir_apply_sampler_key(nir, compiler, &key->base.tex, is_scalar); brw_nir_lower_vue_inputs(nir, &input_vue_map); brw_nir_lower_tcs_outputs(nir, &vue_prog_data->vue_map, key->tes_primitive_mode); @@ -475,7 +475,7 @@ brw_compile_tcs(const struct brw_compiler *compiler, } if (is_scalar) { - fs_visitor v(compiler, log_data, mem_ctx, (void *) key, + fs_visitor v(compiler, log_data, mem_ctx, &key->base, &prog_data->base.base, NULL, nir, 8, shader_time_index, &input_vue_map); if (!v.run_tcs()) { diff --git a/src/intel/compiler/brw_vec4_tes.cpp b/src/intel/compiler/brw_vec4_tes.cpp index 2ad5d06b539..51840b75ee6 100644 --- a/src/intel/compiler/brw_vec4_tes.cpp +++ b/src/intel/compiler/brw_vec4_tes.cpp @@ -40,7 +40,7 @@ vec4_tes_visitor::vec4_tes_visitor(const struct brw_compiler *compiler, const nir_shader *shader, void *mem_ctx, int shader_time_index) - : vec4_visitor(compiler, log_data, &key->tex, &prog_data->base, + : vec4_visitor(compiler, log_data, &key->base.tex, &prog_data->base, shader, mem_ctx, false, shader_time_index) { } diff --git a/src/intel/compiler/brw_vec4_vs_visitor.cpp b/src/intel/compiler/brw_vec4_vs_visitor.cpp index 6ee3cb4ac24..5aa1b9ac0b2 100644 --- a/src/intel/compiler/brw_vec4_vs_visitor.cpp +++ b/src/intel/compiler/brw_vec4_vs_visitor.cpp @@ -173,8 +173,8 @@ vec4_vs_visitor::vec4_vs_visitor(const struct brw_compiler *compiler, const nir_shader *shader, void *mem_ctx, int shader_time_index) - : vec4_visitor(compiler, log_data, &key->tex, &vs_prog_data->base, shader, - mem_ctx, false /* no_spills */, shader_time_index), + : vec4_visitor(compiler, log_data, &key->base.tex, &vs_prog_data->base, + shader, mem_ctx, false /* no_spills */, shader_time_index), key(key), vs_prog_data(vs_prog_data) { |