i965: Move TES input VUE map calculation out a layer.
In Vulkan, we'll compile the TCS and TES at the same time, so I can just pass the TCS output VUE map to brw_compile_tes as the TES input VUE map. So, we only need to do this in GL. Move it to the GL-specific layer. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
6e8ac0641f
commit
86b9be777f
|
@ -801,6 +801,7 @@ const unsigned *
|
|||
brw_compile_tes(const struct brw_compiler *compiler, void *log_data,
|
||||
void *mem_ctx,
|
||||
const struct brw_tes_prog_key *key,
|
||||
const struct brw_vue_map *input_vue_map,
|
||||
struct brw_tes_prog_data *prog_data,
|
||||
const struct nir_shader *shader,
|
||||
struct gl_program *prog,
|
||||
|
|
|
@ -1301,6 +1301,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||
void *log_data,
|
||||
void *mem_ctx,
|
||||
const struct brw_tes_prog_key *key,
|
||||
const struct brw_vue_map *input_vue_map,
|
||||
struct brw_tes_prog_data *prog_data,
|
||||
const nir_shader *src_shader,
|
||||
struct gl_program *prog,
|
||||
|
@ -1315,12 +1316,8 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||
nir->info->inputs_read = key->inputs_read;
|
||||
nir->info->patch_inputs_read = key->patch_inputs_read;
|
||||
|
||||
struct brw_vue_map input_vue_map;
|
||||
brw_compute_tess_vue_map(&input_vue_map, nir->info->inputs_read,
|
||||
nir->info->patch_inputs_read);
|
||||
|
||||
nir = brw_nir_apply_sampler_key(nir, compiler, &key->tex, is_scalar);
|
||||
brw_nir_lower_tes_inputs(nir, &input_vue_map);
|
||||
brw_nir_lower_tes_inputs(nir, input_vue_map);
|
||||
brw_nir_lower_vue_outputs(nir, is_scalar);
|
||||
nir = brw_postprocess_nir(nir, compiler, is_scalar);
|
||||
|
||||
|
@ -1383,7 +1380,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||
|
||||
if (unlikely(INTEL_DEBUG & DEBUG_TES)) {
|
||||
fprintf(stderr, "TES Input ");
|
||||
brw_print_vue_map(stderr, &input_vue_map);
|
||||
brw_print_vue_map(stderr, input_vue_map);
|
||||
fprintf(stderr, "TES Output ");
|
||||
brw_print_vue_map(stderr, &prog_data->base.vue_map);
|
||||
}
|
||||
|
@ -1391,7 +1388,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
|
|||
if (is_scalar) {
|
||||
fs_visitor v(compiler, log_data, mem_ctx, (void *) key,
|
||||
&prog_data->base.base, NULL, nir, 8,
|
||||
shader_time_index, &input_vue_map);
|
||||
shader_time_index, input_vue_map);
|
||||
if (!v.run_tes()) {
|
||||
if (error_str)
|
||||
*error_str = ralloc_strdup(mem_ctx, v.fail_msg);
|
||||
|
|
|
@ -125,12 +125,16 @@ brw_codegen_tes_prog(struct brw_context *brw,
|
|||
start_time = get_time();
|
||||
}
|
||||
|
||||
struct brw_vue_map input_vue_map;
|
||||
brw_compute_tess_vue_map(&input_vue_map, key->inputs_read,
|
||||
key->patch_inputs_read);
|
||||
|
||||
void *mem_ctx = ralloc_context(NULL);
|
||||
unsigned program_size;
|
||||
char *error_str;
|
||||
const unsigned *program =
|
||||
brw_compile_tes(compiler, brw, mem_ctx, key, &prog_data, nir,
|
||||
&tep->program, st_index, &program_size, &error_str);
|
||||
brw_compile_tes(compiler, brw, mem_ctx, key, &input_vue_map, &prog_data,
|
||||
nir, &tep->program, st_index, &program_size, &error_str);
|
||||
if (program == NULL) {
|
||||
tep->program.sh.data->LinkStatus = false;
|
||||
ralloc_strcat(&tep->program.sh.data->InfoLog, error_str);
|
||||
|
|
Loading…
Reference in New Issue