Lines Matching refs:var

230 vtn_variable_resource_index(struct vtn_builder *b, struct vtn_variable *var,
239 vtn_assert(var->var);
240 _mesa_set_add(b->vars_used_indirectly, var->var);
247 nir_intrinsic_set_desc_set(instr, var->descriptor_set);
248 nir_intrinsic_set_binding(instr, var->binding);
249 nir_intrinsic_set_desc_type(instr, vk_desc_type_for_mode(b, var->mode));
251 nir_address_format addr_format = vtn_mode_to_address_format(b, var->mode);
382 vtn_assert(base->var && base->type);
383 block_index = vtn_variable_resource_index(b, base->var, desc_arr_idx);
427 assert(base->var && base->var->var);
428 tail = nir_build_deref_var(&b->nb, base->var->var);
470 ptr->var = base->var;
1351 vtn_var->var->data.patch = true;
1354 vtn_var->var->data.per_primitive = true;
1357 vtn_var->var->data.per_view = true;
1384 vtn_var->var->data.patch = true;
1409 assert(val->pointer->var == void_var);
1429 location += vtn_var->var->data.patch ? VARYING_SLOT_PATCH0 : VARYING_SLOT_VAR0;
1440 if (vtn_var->var->num_members == 0) {
1442 vtn_var->var->data.location = location;
1445 assert(vtn_var->var->members);
1450 vtn_var->var->members[member].location = location;
1455 if (vtn_var->var) {
1456 if (vtn_var->var->num_members == 0) {
1462 apply_var_decoration(b, &vtn_var->var->data, dec);
1466 apply_var_decoration(b, &vtn_var->var->members[member], dec);
1471 apply_var_decoration(b, &vtn_var->var->members[i], dec);
1781 assign_missing_member_locations(struct vtn_variable *var)
1784 glsl_get_length(glsl_without_array(var->type->type));
1785 int location = var->base_location;
1794 if (var->type->block) {
1795 assert(var->base_location != -1 ||
1796 var->var->members[i].location != -1);
1805 if (var->var->members[i].location != -1)
1806 location = var->var->members[i].location;
1808 var->var->members[i].location = location;
1815 glsl_get_struct_field(glsl_without_array(var->type->type), i);
1827 nir_foreach_variable_with_modes(var, b->nb.shader, nir_var_shader_temp) {
1828 if (var->data.explicit_location &&
1829 var->data.location == location)
1830 return nir_build_deref_var(&b->nb, var);
1900 struct vtn_variable *var = rzalloc(b, struct vtn_variable);
1901 var->type = type;
1902 var->mode = mode;
1903 var->base_location = -1;
1906 val->pointer->mode = var->mode;
1907 val->pointer->type = var->type;
1909 val->pointer->var = var;
1910 val->pointer->access = var->type->access;
1912 switch (var->mode) {
1925 var->var = rzalloc(b->shader, nir_variable);
1926 var->var->name = ralloc_strdup(var->var, val->name);
1927 var->var->type = vtn_type_get_nir_type(b, var->type, var->mode);
1934 var->var->data.explicit_location = true;
1936 var->var->data.mode = nir_mode;
1937 var->var->data.location = -1;
1938 var->var->data.ray_query = vtn_type_is_ray_query(var->type);
1939 var->var->interface_type = NULL;
1947 var->var = rzalloc(b->shader, nir_variable);
1948 var->var->name = ralloc_strdup(var->var, val->name);
1950 var->var->type = vtn_type_get_nir_type(b, var->type, var->mode);
1951 var->var->interface_type = var->var->type;
1953 var->var->data.mode = nir_mode;
1954 var->var->data.location = -1;
1955 var->var->data.driver_location = 0;
1956 var->var->data.access = var->type->access;
1963 var->var = rzalloc(b->shader, nir_variable);
1964 var->var->name = ralloc_strdup(var->var, val->name);
1965 var->var->type = vtn_type_get_nir_type(b, var->type, var->mode);
1966 var->var->data.mode = nir_mode;
1971 var->var = rzalloc(b->shader, nir_variable);
1972 var->var->name = ralloc_strdup(var->var, val->name);
1973 var->var->type = vtn_type_get_nir_type(b, var->type, var->mode);
1974 var->var->data.mode = nir_mode;
1992 vtn_foreach_decoration(b, val, gather_var_kind_cb, var);
1993 if (glsl_type_is_array(var->type->type) &&
1997 gather_var_kind_cb, var);
2000 struct vtn_type *per_vertex_type = var->type;
2001 if (nir_is_arrayed_io(var->var, b->shader->info.stage))
2002 per_vertex_type = var->type->array_element;
2006 if (var->mode == vtn_variable_mode_output &&
2018 var->var->interface_type = vtn_type_get_nir_type(b, iface_type,
2019 var->mode);
2032 var->var->num_members = glsl_get_length(per_vertex_type->type);
2033 var->var->members = rzalloc_array(var->var, struct nir_variable_data,
2034 var->var->num_members);
2036 for (unsigned i = 0; i < var->var->num_members; i++) {
2037 var->var->members[i].mode = nir_mode;
2038 var->var->members[i].patch = var->var->data.patch;
2039 var->var->members[i].location = -1;
2048 var_decoration_cb, var);
2138 var->var->constant_initializer =
2139 nir_constant_clone(initializer->constant, var->var);
2142 var->var->pointer_initializer = initializer->pointer->var->var;
2150 if (var->mode == vtn_variable_mode_uniform ||
2151 var->mode == vtn_variable_mode_image ||
2152 var->mode == vtn_variable_mode_ssbo) {
2154 var->var->data.access |= b->mem_model != SpvMemoryModelOpenCL ? ACCESS_RESTRICT : 0;
2157 vtn_foreach_decoration(b, val, var_decoration_cb, var);
2161 val->pointer->access |= var->access;
2163 if ((var->mode == vtn_variable_mode_input ||
2164 var->mode == vtn_variable_mode_output) &&
2165 var->var->members) {
2166 assign_missing_member_locations(var);
2169 if (var->mode == vtn_variable_mode_uniform ||
2170 var->mode == vtn_variable_mode_image ||
2171 var->mode == vtn_variable_mode_ubo ||
2172 var->mode == vtn_variable_mode_ssbo ||
2173 var->mode == vtn_variable_mode_atomic_counter) {
2177 var->var->data.binding = var->binding;
2178 var->var->data.explicit_binding = var->explicit_binding;
2179 var->var->data.descriptor_set = var->descriptor_set;
2180 var->var->data.index = var->input_attachment_index;
2181 var->var->data.offset = var->offset;
2183 if (glsl_type_is_image(glsl_without_array(var->var->type)))
2184 var->var->data.image.format = without_array->image_format;
2187 if (var->mode == vtn_variable_mode_function) {
2188 vtn_assert(var->var != NULL && var->var->members == NULL);
2189 nir_function_impl_add_variable(b->nb.impl, var->var);
2190 } else if (var->var) {
2191 nir_shader_add_variable(b->shader, var->var);
2194 var->mode == vtn_variable_mode_accel_struct ||
2195 var->mode == vtn_variable_mode_shader_record);
2430 nir_variable *nir_var = val->pointer->var->var;