etnaviv: nir: support nir_intrinsic_load_texture_rect_scaling

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8898>
This commit is contained in:
Christian Gmeiner
2021-02-06 21:09:19 +01:00
committed by Marge Bot
parent 7c40e9a322
commit 06f409a8c1
2 changed files with 12 additions and 1 deletions
@@ -370,6 +370,15 @@ get_src(struct etna_compile *c, nir_src *src)
return (hw_src) { .use = 1, .rgroup = INST_RGROUP_INTERNAL };
case nir_intrinsic_load_frag_coord:
return SRC_REG(0, INST_SWIZ_IDENTITY);
case nir_intrinsic_load_texture_rect_scaling: {
int sampler = nir_src_as_int(intr->src[0]);
nir_const_value values[] = {
TEXSCALE(sampler, 0),
TEXSCALE(sampler, 1),
};
return src_swizzle(const_src(c, values, 2), SWIZZLE(X,Y,X,X));
}
default:
compile_error(c, "Unhandled NIR intrinsic type: %s\n",
nir_intrinsic_infos[intr->intrinsic].name);
@@ -582,6 +591,7 @@ emit_intrinsic(struct etna_compile *c, nir_intrinsic_instr * intr)
break;
case nir_intrinsic_load_input:
case nir_intrinsic_load_instance_id:
case nir_intrinsic_load_texture_rect_scaling:
break;
default:
compile_error(c, "Unhandled NIR intrinsic type: %s\n",
@@ -215,7 +215,8 @@ dest_for_instr(nir_instr *instr)
if (intr->intrinsic == nir_intrinsic_load_uniform ||
intr->intrinsic == nir_intrinsic_load_ubo ||
intr->intrinsic == nir_intrinsic_load_input ||
intr->intrinsic == nir_intrinsic_load_instance_id)
intr->intrinsic == nir_intrinsic_load_instance_id ||
intr->intrinsic == nir_intrinsic_load_texture_rect_scaling)
dest = &intr->dest;
} break;
case nir_instr_type_deref: