Lines Matching defs:var

161    nir_foreach_variable_with_modes(var, shader, mode) {
162 var->data.driver_location = location;
163 bool bindless_type_size = var->data.mode == nir_var_shader_in ||
164 var->data.mode == nir_var_shader_out ||
165 var->data.bindless;
166 location += type_size(var->type, bindless_type_size);
181 nir_is_arrayed_io(const nir_variable *var, gl_shader_stage stage)
183 if (var->data.patch || !glsl_type_is_array(var->type))
188 if (var->data.location == VARYING_SLOT_PRIMITIVE_INDICES)
189 return var->data.per_primitive;
192 if (var->data.mode == nir_var_shader_in)
197 if (var->data.mode == nir_var_shader_out)
205 const nir_variable *var)
207 const struct glsl_type *type = var->type;
209 if (nir_is_arrayed_io(var, state->builder.shader->info.stage)) {
222 var->data.location == VARYING_SLOT_PRIMITIVE_INDICES &&
223 !nir_is_arrayed_io(var, state->builder.shader->info.stage))
226 return state->type_size(type, var->data.bindless);
250 if (path.path[0]->var->data.compact) {
294 nir_ssa_def *array_index, nir_variable *var, nir_ssa_def *offset,
300 nir_variable_mode mode = var->data.mode;
308 var->data.interpolation != INTERP_MODE_FLAT &&
309 !var->data.per_primitive) {
310 if (var->data.interpolation == INTERP_MODE_EXPLICIT) {
317 if (var->data.sample ||
320 else if (var->data.centroid)
326 var->data.interpolation);
336 var->data.per_primitive ? nir_intrinsic_load_per_primitive_output :
350 nir_intrinsic_set_base(load, var->data.driver_location);
356 state->type_size(var->type, var->data.bindless));
359 nir_intrinsic_set_access(load, var->data.access);
365 semantics.location = var->data.location;
366 semantics.num_slots = get_number_of_slots(state, var);
367 semantics.fb_fetch_output = var->data.fb_fetch_output;
369 var->data.precision == GLSL_PRECISION_MEDIUM ||
370 var->data.precision == GLSL_PRECISION_LOW;
393 nir_ssa_def *array_index, nir_variable *var, nir_ssa_def *offset,
412 emit_load(state, array_index, var, offset, component,
430 emit_load(state, array_index, var, offset, component,
434 return emit_load(state, array_index, var, offset, component,
443 nir_ssa_def *array_index, nir_variable *var, nir_ssa_def *offset,
449 assert(var->data.mode == nir_var_shader_out);
452 var->data.per_primitive ? nir_intrinsic_store_per_primitive_output :
461 nir_intrinsic_set_base(store, var->data.driver_location);
468 nir_intrinsic_set_access(store, var->data.access);
477 if (var->data.stream & NIR_STREAM_PACKED) {
478 gs_streams = var->data.stream & ~NIR_STREAM_PACKED;
480 assert(var->data.stream < 4);
483 gs_streams |= var->data.stream << (2 * i);
488 semantics.location = var->data.location;
489 semantics.num_slots = get_number_of_slots(state, var);
490 semantics.dual_source_blend_index = var->data.index;
493 var->data.precision == GLSL_PRECISION_MEDIUM ||
494 var->data.precision == GLSL_PRECISION_LOW;
495 semantics.per_view = var->data.per_view;
496 semantics.invariant = var->data.invariant;
505 nir_ssa_def *array_index, nir_variable *var, nir_ssa_def *offset,
535 emit_store(state, data32, array_index, var, offset,
550 emit_store(state, b32_val, array_index, var, offset,
555 emit_store(state, intrin->src[1].ssa, array_index, var, offset,
564 nir_variable *var, nir_ssa_def *offset, unsigned component,
568 assert(var->data.mode == nir_var_shader_in);
573 if (var->data.interpolation == INTERP_MODE_FLAT ||
574 var->data.interpolation == INTERP_MODE_EXPLICIT) {
577 if (var->data.interpolation == INTERP_MODE_EXPLICIT) {
582 return lower_load(intrin, state, vertex_index, var, offset, component, type);
609 nir_intrinsic_set_interp_mode(bary_setup, var->data.interpolation);
619 semantics.location = var->data.location;
620 semantics.num_slots = get_number_of_slots(state, var);
622 var->data.precision == GLSL_PRECISION_MEDIUM ||
623 var->data.precision == GLSL_PRECISION_LOW;
632 .base = var->data.driver_location,
676 nir_variable *var = nir_deref_instr_get_variable(deref);
680 const bool is_arrayed = nir_is_arrayed_io(var, b->shader->info.stage);
684 unsigned component_offset = var->data.location_frac;
685 bool bindless_type_size = var->data.mode == nir_var_shader_in ||
686 var->data.mode == nir_var_shader_out ||
687 var->data.bindless;
728 replacement = lower_load(intrin, state, array_index, var, offset,
733 lower_store(intrin, state, array_index, var, offset,
742 replacement = lower_interpolate_at(intrin, state, var, offset,
924 build_addr_for_var(nir_builder *b, nir_variable *var,
927 assert(var->data.mode & (nir_var_uniform | nir_var_mem_shared |
941 switch (var->data.mode) {
966 return build_addr_iadd_imm(b, base_addr, addr_format, var->data.mode,
967 var->data.driver_location);
971 assert(var->data.driver_location <= UINT32_MAX);
972 return nir_imm_int(b, var->data.driver_location);
975 assert(var->data.driver_location <= UINT32_MAX);
976 return nir_imm_int64(b, var->data.driver_location);
979 switch (var->data.mode) {
982 assert(var->data.driver_location <= UINT32_MAX);
983 return nir_imm_intN_t(b, var->data.driver_location | 2ull << 62, 64);
986 assert(var->data.driver_location <= UINT32_MAX);
987 return nir_imm_intN_t(b, var->data.driver_location | 1ull << 62, 64);
991 var->data.driver_location);
1504 nir_variable *var = nir_deref_instr_get_variable(deref);
1506 nir_intrinsic_set_range(load, glsl_get_explicit_size(var->type, false));
1862 return build_addr_for_var(b, deref->var, addr_format);
2030 *align_offset = deref->var->data.driver_location % 256;
2430 nir_foreach_variable_in_list(var, vars) {
2431 if (var->data.mode != mode)
2436 glsl_get_explicit_type_for_size_align(var->type, type_info, &size, &align);
2438 if (explicit_type != var->type)
2439 var->type = explicit_type;
2446 var->data.driver_location = ALIGN_POT(offset, align);
2447 offset = var->data.driver_location + size;
2602 nir_foreach_variable_with_modes(var, shader, mode) {
2603 assert(var->data.driver_location < dst_size);
2604 write_constant((char *)dst + var->data.driver_location,
2605 dst_size - var->data.driver_location,
2606 var->constant_initializer, var->type);
2971 nir_variable *var = nir_deref_instr_get_variable(deref);
2974 if (var->data.location == VARYING_SLOT_COL0) {
2976 nir->info.fs.color0_interp = var->data.interpolation;
2977 nir->info.fs.color0_sample = var->data.sample;
2978 nir->info.fs.color0_centroid = var->data.centroid;
2979 } else if (var->data.location == VARYING_SLOT_COL1) {
2981 nir->info.fs.color1_interp = var->data.interpolation;
2982 nir->info.fs.color1_sample = var->data.sample;
2983 nir->info.fs.color1_centroid = var->data.centroid;