i965: Use the tex projector lowering pass instead of hand-rolling it.
This only impacts the ARB_fp path. We can't quite disable the GLSL-level lowering pass, because it needs to apply before brw_do_lower_unnormalized_offset(). total instructions in shared programs: 5667857 -> 5667847 (-0.00%) instructions in affected programs: 1114 -> 1104 (-0.90%) helped: 16 HURT: 6 Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
@@ -101,6 +101,9 @@ fs_visitor::emit_nir_code()
|
||||
nir_lower_global_vars_to_local(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_lower_tex_projector(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
nir_split_var_copies(nir);
|
||||
nir_validate_shader(nir);
|
||||
|
||||
@@ -1782,7 +1785,6 @@ fs_visitor::nir_emit_texture(nir_tex_instr *instr)
|
||||
int lod_components = 0, offset_components = 0;
|
||||
|
||||
fs_reg coordinate, shadow_comparitor, lod, lod2, sample_index, mcs, tex_offset;
|
||||
fs_reg projector;
|
||||
|
||||
for (unsigned i = 0; i < instr->num_srcs; i++) {
|
||||
fs_reg src = get_nir_src(instr->src[i].src);
|
||||
@@ -1835,8 +1837,7 @@ fs_visitor::nir_emit_texture(nir_tex_instr *instr)
|
||||
offset_components = instr->coord_components;
|
||||
break;
|
||||
case nir_tex_src_projector:
|
||||
projector = retype(src, BRW_REGISTER_TYPE_F);
|
||||
break;
|
||||
unreachable("should be lowered");
|
||||
|
||||
case nir_tex_src_sampler_offset: {
|
||||
/* Figure out the highest possible sampler index and mark it as used */
|
||||
@@ -1860,13 +1861,6 @@ fs_visitor::nir_emit_texture(nir_tex_instr *instr)
|
||||
}
|
||||
}
|
||||
|
||||
if (projector.file != BAD_FILE) {
|
||||
fs_reg invproj = vgrf(glsl_type::float_type);
|
||||
emit_math(SHADER_OPCODE_RCP, invproj, projector);
|
||||
for (int i = 0; i < 3; i++)
|
||||
emit(MUL(offset(coordinate, i), offset(coordinate, i), invproj));
|
||||
}
|
||||
|
||||
if (instr->op == nir_texop_txf_ms) {
|
||||
if (brw->gen >= 7 &&
|
||||
key_tex->compressed_multisample_layout_mask & (1 << sampler)) {
|
||||
|
||||
Reference in New Issue
Block a user