v3d: Use the new lower_to_scratch implementation for indirects on temps.
We can use the same register spilling infrastructure for our loads/stores of indirect access of temp variables, instead of doing an if ladder. Cuts 50% of instructions and max-temps from 2 KSP shaders in shader-db. Also causes several other KSP shaders with large bodies and large loop counts to not be force-unrolled. The change was originally motivated by NOLTIS slightly modifying register pressure in piglit temp mat4 array read/write tests, triggering register allocation failures.
This commit is contained in:
@@ -749,6 +749,7 @@ struct qreg vir_uniform(struct v3d_compile *c,
|
||||
enum quniform_contents contents,
|
||||
uint32_t data);
|
||||
void vir_schedule_instructions(struct v3d_compile *c);
|
||||
void v3d_setup_spill_base(struct v3d_compile *c);
|
||||
struct v3d_qpu_instr v3d_qpu_nop(void);
|
||||
|
||||
struct qreg vir_emit_def(struct v3d_compile *c, struct qinst *inst);
|
||||
@@ -796,6 +797,7 @@ bool vir_opt_small_immediates(struct v3d_compile *c);
|
||||
bool vir_opt_vpm(struct v3d_compile *c);
|
||||
void v3d_nir_lower_blend(nir_shader *s, struct v3d_compile *c);
|
||||
void v3d_nir_lower_io(nir_shader *s, struct v3d_compile *c);
|
||||
void v3d_nir_lower_scratch(nir_shader *s);
|
||||
void v3d_nir_lower_txf_ms(nir_shader *s, struct v3d_compile *c);
|
||||
void v3d_nir_lower_image_load_store(nir_shader *s);
|
||||
void vir_lower_uniforms(struct v3d_compile *c);
|
||||
|
Reference in New Issue
Block a user