mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-28 10:50:39 +02:00
nir: nir_shader_compiler_options: drop native_integers
Driver which do not support native integers should use a lowering pass to go from integers to floats. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
050b934a24
commit
4e110eca42
12 changed files with 11 additions and 53 deletions
|
|
@ -2380,7 +2380,6 @@ const nir_shader_compiler_options v3d_nir_options = {
|
|||
.lower_ldexp = true,
|
||||
.lower_mul_high = true,
|
||||
.lower_wpos_pntc = true,
|
||||
.native_integers = true,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ glsl_to_nir(struct gl_context *ctx,
|
|||
|
||||
nir_visitor::nir_visitor(gl_context *ctx, nir_shader *shader)
|
||||
{
|
||||
this->supports_ints = shader->options->native_integers;
|
||||
this->supports_ints = true;
|
||||
this->supports_std430 = ctx->Const.UseSTD430AsDefaultPacking;
|
||||
this->shader = shader;
|
||||
this->is_global = true;
|
||||
|
|
|
|||
|
|
@ -2300,12 +2300,6 @@ typedef struct nir_shader_compiler_options {
|
|||
bool lower_all_io_to_temps;
|
||||
bool lower_all_io_to_elements;
|
||||
|
||||
/**
|
||||
* Does the driver support real 32-bit integers? (Otherwise, integers
|
||||
* are simulated by floats.)
|
||||
*/
|
||||
bool native_integers;
|
||||
|
||||
/* Indicates that the driver only has zero-based vertex id */
|
||||
bool vertex_id_zero_based;
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ static const nir_shader_compiler_options options = {
|
|||
.lower_uadd_carry = true,
|
||||
.lower_mul_high = true,
|
||||
.fuse_ffma = true,
|
||||
.native_integers = true,
|
||||
.vertex_id_zero_based = true,
|
||||
.lower_extract_byte = true,
|
||||
.lower_extract_word = true,
|
||||
|
|
@ -72,7 +71,6 @@ static const nir_shader_compiler_options options_a6xx = {
|
|||
.lower_uadd_carry = true,
|
||||
.lower_mul_high = true,
|
||||
.fuse_ffma = true,
|
||||
.native_integers = true,
|
||||
.vertex_id_zero_based = false,
|
||||
.lower_extract_byte = true,
|
||||
.lower_extract_word = true,
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ static const nir_shader_compiler_options vs_nir_options = {
|
|||
.lower_ftrunc = true,
|
||||
/* could be implemented by clamp */
|
||||
.lower_fsat = true,
|
||||
.native_integers = true,
|
||||
};
|
||||
|
||||
static const nir_shader_compiler_options fs_nir_options = {
|
||||
|
|
@ -60,7 +59,6 @@ static const nir_shader_compiler_options fs_nir_options = {
|
|||
.lower_flrp32 = true,
|
||||
.lower_flrp64 = true,
|
||||
.lower_fsign = true,
|
||||
.native_integers = true,
|
||||
};
|
||||
|
||||
const void *
|
||||
|
|
|
|||
|
|
@ -899,7 +899,6 @@ static const nir_shader_compiler_options nir_options = {
|
|||
.lower_extract_byte = true,
|
||||
.lower_extract_word = true,
|
||||
.lower_all_io_to_temps = false,
|
||||
.native_integers = true,
|
||||
.lower_cs_local_index_from_id = true,
|
||||
.use_interpolated_input_intrinsics = true,
|
||||
.max_unroll_iterations = 32,
|
||||
|
|
|
|||
|
|
@ -941,7 +941,6 @@ static const nir_shader_compiler_options nir_options = {
|
|||
.lower_extract_byte = true,
|
||||
.lower_extract_word = true,
|
||||
.lower_all_io_to_temps = false,
|
||||
.native_integers = true,
|
||||
.vertex_id_zero_based = false,
|
||||
.lower_base_vertex = false,
|
||||
.lower_helper_invocation = false,
|
||||
|
|
|
|||
|
|
@ -106,8 +106,6 @@ static const nir_shader_compiler_options midgard_nir_options = {
|
|||
.vertex_id_zero_based = true,
|
||||
.lower_extract_byte = true,
|
||||
.lower_extract_word = true,
|
||||
|
||||
.native_integers = true
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -498,7 +498,6 @@ static const struct nir_shader_compiler_options nir_options = {
|
|||
.lower_extract_word = true,
|
||||
.optimize_sample_mask_in = true,
|
||||
.max_unroll_iterations = 32,
|
||||
.native_integers = true,
|
||||
};
|
||||
|
||||
static const void *
|
||||
|
|
|
|||
|
|
@ -2173,7 +2173,6 @@ static const nir_shader_compiler_options nir_options = {
|
|||
.lower_fsqrt = true,
|
||||
.lower_ldexp = true,
|
||||
.lower_negate = true,
|
||||
.native_integers = true,
|
||||
.max_unroll_iterations = 32,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@
|
|||
.lower_isign = true, \
|
||||
.lower_ldexp = true, \
|
||||
.lower_device_index_to_zero = true, \
|
||||
.native_integers = true, \
|
||||
.use_interpolated_input_intrinsics = true, \
|
||||
.vertex_id_zero_based = true, \
|
||||
.lower_base_vertex = true
|
||||
|
|
|
|||
|
|
@ -362,18 +362,10 @@ ptn_lit(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
|||
nir_ssa_def *pow = nir_fpow(b, nir_fmax(b, src0_y, nir_imm_float(b, 0.0)),
|
||||
wclamp);
|
||||
|
||||
nir_ssa_def *z;
|
||||
if (b->shader->options->native_integers) {
|
||||
z = nir_bcsel(b,
|
||||
nir_fge(b, nir_imm_float(b, 0.0), ptn_channel(b, src[0], X)),
|
||||
nir_imm_float(b, 0.0),
|
||||
pow);
|
||||
} else {
|
||||
z = nir_fcsel(b,
|
||||
nir_sge(b, nir_imm_float(b, 0.0), ptn_channel(b, src[0], X)),
|
||||
nir_imm_float(b, 0.0),
|
||||
pow);
|
||||
}
|
||||
nir_ssa_def *z = nir_bcsel(b,
|
||||
nir_fge(b, nir_imm_float(b, 0.0), ptn_channel(b, src[0], X)),
|
||||
nir_imm_float(b, 0.0),
|
||||
pow);
|
||||
|
||||
ptn_move_dest_masked(b, dest, z, WRITEMASK_Z);
|
||||
}
|
||||
|
|
@ -402,11 +394,7 @@ ptn_scs(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
|||
static void
|
||||
ptn_slt(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
||||
{
|
||||
if (b->shader->options->native_integers) {
|
||||
ptn_move_dest(b, dest, nir_b2f32(b, nir_flt(b, src[0], src[1])));
|
||||
} else {
|
||||
ptn_move_dest(b, dest, nir_slt(b, src[0], src[1]));
|
||||
}
|
||||
ptn_move_dest(b, dest, nir_b2f32(b, nir_flt(b, src[0], src[1])));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -415,11 +403,7 @@ ptn_slt(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
|||
static void
|
||||
ptn_sge(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
||||
{
|
||||
if (b->shader->options->native_integers) {
|
||||
ptn_move_dest(b, dest, nir_b2f32(b, nir_fge(b, src[0], src[1])));
|
||||
} else {
|
||||
ptn_move_dest(b, dest, nir_sge(b, src[0], src[1]));
|
||||
}
|
||||
ptn_move_dest(b, dest, nir_b2f32(b, nir_fge(b, src[0], src[1])));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -464,15 +448,9 @@ ptn_dph(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
|||
static void
|
||||
ptn_cmp(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
||||
{
|
||||
if (b->shader->options->native_integers) {
|
||||
ptn_move_dest(b, dest, nir_bcsel(b,
|
||||
nir_flt(b, src[0], nir_imm_float(b, 0.0)),
|
||||
src[1], src[2]));
|
||||
} else {
|
||||
ptn_move_dest(b, dest, nir_fcsel(b,
|
||||
nir_slt(b, src[0], nir_imm_float(b, 0.0)),
|
||||
src[1], src[2]));
|
||||
}
|
||||
ptn_move_dest(b, dest, nir_bcsel(b,
|
||||
nir_flt(b, src[0], nir_imm_float(b, 0.0)),
|
||||
src[1], src[2]));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -484,9 +462,7 @@ ptn_lrp(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src)
|
|||
static void
|
||||
ptn_kil(nir_builder *b, nir_ssa_def **src)
|
||||
{
|
||||
nir_ssa_def *cmp = b->shader->options->native_integers ?
|
||||
nir_bany(b, nir_flt(b, src[0], nir_imm_float(b, 0.0))) :
|
||||
nir_fany_nequal4(b, nir_slt(b, src[0], nir_imm_float(b, 0.0)), nir_imm_float(b, 0.0));
|
||||
nir_ssa_def *cmp = nir_bany(b, nir_flt(b, src[0], nir_imm_float(b, 0.0)));
|
||||
|
||||
nir_intrinsic_instr *discard =
|
||||
nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue