nir/builder: Don't assume we have compiler options

We use nir_builder a variety of places where we may not yet have
back-end compiler options such as for building meta shaders.  Don't
assume we always have an options struct.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24459>
This commit is contained in:
Faith Ekstrand
2023-08-02 11:58:38 -05:00
committed by Marge Bot
parent 0a5fab555d
commit 356a268b46
2 changed files with 5 additions and 3 deletions

View File

@@ -612,7 +612,7 @@ nir_gen_rect_vertices(nir_builder *b, nir_ssa_def *z, nir_ssa_def *w)
w = nir_imm_float(b, 1.0); w = nir_imm_float(b, 1.0);
nir_ssa_def *vertex_id; nir_ssa_def *vertex_id;
if (b->shader->options->vertex_id_zero_based) if (b->shader->options && b->shader->options->vertex_id_zero_based)
vertex_id = nir_load_vertex_id_zero_base(b); vertex_id = nir_load_vertex_id_zero_base(b);
else else
vertex_id = nir_load_vertex_id(b); vertex_id = nir_load_vertex_id(b);

View File

@@ -795,7 +795,8 @@ _nir_mul_imm(nir_builder *build, nir_ssa_def *x, uint64_t y, bool amul)
return nir_imm_intN_t(build, 0, x->bit_size); return nir_imm_intN_t(build, 0, x->bit_size);
} else if (y == 1) { } else if (y == 1) {
return x; return x;
} else if (!build->shader->options->lower_bitops && } else if ((!build->shader->options ||
!build->shader->options->lower_bitops) &&
util_is_power_of_two_or_zero64(y)) { util_is_power_of_two_or_zero64(y)) {
return nir_ishl(build, x, nir_imm_int(build, ffsll(y) - 1)); return nir_ishl(build, x, nir_imm_int(build, ffsll(y) - 1));
} else if (amul) { } else if (amul) {
@@ -983,7 +984,8 @@ nir_uclamp(nir_builder *b,
static inline nir_ssa_def * static inline nir_ssa_def *
nir_ffma_imm12(nir_builder *build, nir_ssa_def *src0, double src1, double src2) nir_ffma_imm12(nir_builder *build, nir_ssa_def *src0, double src1, double src2)
{ {
if (build->shader->options->avoid_ternary_with_two_constants) if (build->shader->options &&
build->shader->options->avoid_ternary_with_two_constants)
return nir_fadd_imm(build, nir_fmul_imm(build, src0, src1), src2); return nir_fadd_imm(build, nir_fmul_imm(build, src0, src1), src2);
else else
return nir_ffma(build, src0, nir_imm_floatN_t(build, src1, src0->bit_size), return nir_ffma(build, src0, nir_imm_floatN_t(build, src1, src0->bit_size),