|
|
@@ -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)) { |