v3d: Move the stores for fixed function VS output reads into NIR.
This lets us emit the VPM_WRITEs directly from nir_intrinsic_store_output() (useful once NIR scheduling is in place so that we can reduce register pressure), and lets future NIR scheduling schedule the math to generate them. Even in the meantime, it looks like this lets NIR DCE some more code and make better decisions. total instructions in shared programs: 6429246 -> 6412976 (-0.25%) total threads in shared programs: 153924 -> 153934 (<.01%) total loops in shared programs: 486 -> 483 (-0.62%) total uniforms in shared programs: 2385436 -> 2388195 (0.12%) Acked-by: Ian Romanick <ian.d.romanick@intel.com> (nir)
This commit is contained in:
@@ -566,7 +566,6 @@ vir_compile_init(const struct v3d_compiler *compiler,
|
||||
vir_set_emit_block(c, vir_new_block(c));
|
||||
|
||||
c->output_position_index = -1;
|
||||
c->output_point_size_index = -1;
|
||||
c->output_sample_mask_index = -1;
|
||||
|
||||
c->def_ht = _mesa_hash_table_create(c, _mesa_hash_pointer,
|
||||
@@ -695,7 +694,7 @@ v3d_vs_set_prog_data(struct v3d_compile *c,
|
||||
* channel).
|
||||
*/
|
||||
prog_data->vpm_input_size = align(prog_data->vpm_input_size, 8) / 8;
|
||||
prog_data->vpm_output_size = align(c->num_vpm_writes, 8) / 8;
|
||||
prog_data->vpm_output_size = align(c->vpm_output_size, 8) / 8;
|
||||
|
||||
/* Set us up for shared input/output segments. This is apparently
|
||||
* necessary for our VCM setup to avoid varying corruption.
|
||||
|
Reference in New Issue
Block a user