Lines Matching refs:var
53 get_deref_info(nir_shader *shader, nir_variable *var, nir_deref_instr *deref,
59 const bool is_arrayed = nir_is_arrayed_io(var, shader->info.stage);
77 if (!path.path[0]->var->data.compact) {
94 set_io_mask(nir_shader *shader, nir_variable *var, int offset, int len,
99 if (var->data.location == -1)
102 int idx = var->data.location + offset + i;
103 bool is_patch_generic = var->data.patch &&
127 get_deref_info(shader, var, deref, &cross_invocation, &indirect);
129 if (var->data.mode == nir_var_shader_in) {
144 shader->info.fs.uses_sample_qualifier |= var->data.sample;
147 assert(var->data.mode == nir_var_shader_out);
166 } else if (!var->data.read_only) {
176 if (var->data.fb_fetch_output) {
183 !is_output_read && var->data.index == 1)
194 mark_whole_variable(nir_shader *shader, nir_variable *var,
197 const struct glsl_type *type = var->type;
199 if (nir_is_arrayed_io(var, shader->info.stage) ||
202 var->data.location == VARYING_SLOT_PRIMITIVE_INDICES &&
203 !var->data.per_primitive)) {
208 if (var->data.per_view) {
214 var->data.compact ? DIV_ROUND_UP(glsl_get_length(type), 4)
217 set_io_mask(shader, var, 0, slots, deref, is_output_read);
221 get_io_offset(nir_deref_instr *deref, nir_variable *var, bool is_arrayed,
224 if (var->data.compact) {
226 assert(glsl_type_is_array(var->type));
231 (nir_src_as_uint(deref->arr.index) + var->data.location_frac) / 4u :
270 try_mask_partial_io(nir_shader *shader, nir_variable *var,
273 const struct glsl_type *type = var->type;
274 bool is_arrayed = nir_is_arrayed_io(var, shader->info.stage);
283 if (var->data.per_view)
286 unsigned offset = get_io_offset(deref, var, is_arrayed, skip_non_arrayed);
291 var->data.compact ? DIV_ROUND_UP(glsl_get_length(type), 4)
308 set_io_mask(shader, var, offset, len, deref, is_output_read);
530 nir_variable *var = nir_deref_instr_get_variable(deref);
532 if (var->data.mode == nir_var_shader_out &&
536 if (!try_mask_partial_io(shader, var, deref, is_output_read))
537 mark_whole_variable(shader, var, deref, is_output_read);
542 var->data.mode == nir_var_shader_in &&
543 glsl_type_is_dual_slot(glsl_without_array(var->type))) {
544 for (unsigned i = 0; i < glsl_count_attribute_slots(var->type, false); i++) {
545 int idx = var->data.location + i;
556 nir_variable *var = nir_deref_instr_get_variable(deref);
557 enum glsl_sampler_dim dim = glsl_get_sampler_dim(glsl_without_array(var->type));
562 var->data.fb_fetch_output = true;
936 nir_foreach_variable_with_modes(var, shader, nir_var_image | nir_var_uniform) {
941 if (var->data.bindless || var->interface_type)
944 shader->info.num_textures += glsl_type_get_sampler_count(var->type);
945 shader->info.num_images += glsl_type_get_image_count(var->type);
995 nir_foreach_shader_out_variable(var, shader) {
996 if (var->data.per_primitive) {
997 assert(nir_is_arrayed_io(var, shader->info.stage));
999 glsl_count_attribute_slots(glsl_get_array_element(var->type), false);
1000 shader->info.per_primitive_outputs |= BITFIELD64_RANGE(var->data.location, slots);
1007 nir_foreach_shader_in_variable(var, shader) {
1008 if (var->data.per_primitive) {
1010 glsl_count_attribute_slots(var->type, false);
1011 shader->info.per_primitive_inputs |= BITFIELD64_RANGE(var->data.location, slots);
1017 nir_foreach_variable_in_shader(var, shader) {
1018 if (!var->data.ray_query)
1021 shader->info.ray_queries += MAX2(glsl_get_aoa_size(var->type), 1);
1026 nir_foreach_function_temp_variable(var, func->impl) {
1027 if (!var->data.ray_query)
1030 shader->info.ray_queries += MAX2(glsl_get_aoa_size(var->type), 1);