Module: Mesa Branch: main Commit: 2cbc318193b8436d660b8dca720e7dd27dc495d1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2cbc318193b8436d660b8dca720e7dd27dc495d1
Author: Caio Oliveira <[email protected]> Date: Thu Dec 14 22:31:27 2023 -0800 r600/sfn: Use glsl_type C helpers In one case, just used glsl_without_array instead of checking if its an array to decide to use. Using that helper with a non-array type just returns the type. Reviewed-by: Jesse Natalie <[email protected]> Acked-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26707> --- src/gallium/drivers/r600/sfn/sfn_nir.cpp | 4 +-- .../drivers/r600/sfn/sfn_nir_lower_64bit.cpp | 38 +++++++++++----------- src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp | 2 +- src/gallium/drivers/r600/sfn/sfn_shader.cpp | 12 +++---- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_nir.cpp b/src/gallium/drivers/r600/sfn/sfn_nir.cpp index f490c63ff5e..b973cdfa221 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir.cpp @@ -443,7 +443,7 @@ r600_nir_lower_atomics(nir_shader *shader) std::map<unsigned, nir_variable *> sorted_var; nir_foreach_variable_with_modes_safe(var, shader, nir_var_uniform) { - if (var->type->contains_atomic()) { + if (glsl_contains_atomic(var->type)) { sorted_var[(var->data.binding << 16) | var->data.offset] = var; exec_node_remove(&var->node); } @@ -451,7 +451,7 @@ r600_nir_lower_atomics(nir_shader *shader) for (auto& [dummy, var] : sorted_var) { auto iindex = binding_offset.find(var->data.binding); - unsigned offset_update = var->type->atomic_size() / 4; /* ATOMIC_COUNTER_SIZE */ + unsigned offset_update = glsl_atomic_size(var->type) / 4; /* ATOMIC_COUNTER_SIZE */ if (iindex == binding_offset.end()) { var->data.index = 0; binding_offset[var->data.binding] = offset_update; diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp index b11c98c500a..449cdf9f3ba 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_64bit.cpp @@ -391,7 +391,7 @@ nir_def * LowerSplit64BitVar::split_load_deref_array(nir_intrinsic_instr *intr, nir_src& index) { auto old_var = nir_intrinsic_get_var(intr, 0); - unsigned old_components = old_var->type->without_array()->components(); + unsigned old_components = glsl_get_components(glsl_without_array(old_var->type)); assert(old_components > 2 && old_components <= 4); @@ -416,7 +416,7 @@ LowerSplit64BitVar::split_store_deref_array(nir_intrinsic_instr *intr, nir_deref_instr *deref) { auto old_var = nir_intrinsic_get_var(intr, 0); - unsigned old_components = old_var->type->without_array()->components(); + unsigned old_components = glsl_get_components(glsl_without_array(old_var->type)); assert(old_components > 2 && old_components <= 4); @@ -453,7 +453,7 @@ LowerSplit64BitVar::split_store_deref_var(nir_intrinsic_instr *intr, UNUSED nir_deref_instr *deref) { auto old_var = nir_intrinsic_get_var(intr, 0); - unsigned old_components = old_var->type->without_array()->components(); + unsigned old_components = glsl_get_components(glsl_without_array(old_var->type)); assert(old_components > 2 && old_components <= 4); @@ -481,7 +481,7 @@ LowerSplit64BitVar::split_load_deref_var(nir_intrinsic_instr *intr) { auto old_var = nir_intrinsic_get_var(intr, 0); auto vars = get_var_pair(old_var); - unsigned old_components = old_var->type->components(); + unsigned old_components = glsl_get_components(old_var->type); nir_deref_instr *deref1 = nir_build_deref_var(b, vars.first); auto *load1 = nir_load_deref(b, deref1); @@ -499,18 +499,18 @@ LowerSplit64BitVar::get_var_pair(nir_variable *old_var) { auto split_vars = m_varmap.find(old_var->data.driver_location); - assert(old_var->type->without_array()->components() > 2); + assert(glsl_get_components(glsl_without_array(old_var->type)) > 2); if (split_vars == m_varmap.end()) { auto var1 = nir_variable_clone(old_var, b->shader); auto var2 = nir_variable_clone(old_var, b->shader); var1->type = glsl_dvec_type(2); - var2->type = glsl_dvec_type(old_var->type->without_array()->components() - 2); + var2->type = glsl_dvec_type(glsl_get_components(glsl_without_array(old_var->type)) - 2); - if (old_var->type->is_array()) { - var1->type = glsl_array_type(var1->type, old_var->type->array_size(), 0); - var2->type = glsl_array_type(var2->type, old_var->type->array_size(), 0); + if (glsl_type_is_array(old_var->type)) { + var1->type = glsl_array_type(var1->type, glsl_array_size(old_var->type), 0); + var2->type = glsl_array_type(var2->type, glsl_array_size(old_var->type), 0); } if (old_var->data.mode == nir_var_shader_in || @@ -838,9 +838,9 @@ Lower64BitToVec2::filter(const nir_instr *instr) const if (nir_src_bit_size(intr->src[1]) == 64) return true; auto var = nir_intrinsic_get_var(intr, 0); - if (var->type->without_array()->bit_size() == 64) + if (glsl_get_bit_size(glsl_without_array(var->type)) == 64) return true; - return (var->type->without_array()->components() != intr->num_components); + return (glsl_get_components(glsl_without_array(var->type)) != intr->num_components); } case nir_intrinsic_store_global: return nir_src_bit_size(intr->src[0]) == 64; @@ -951,15 +951,15 @@ Lower64BitToVec2::load_deref_64_to_vec2(nir_intrinsic_instr *intr) { auto deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr); auto var = nir_intrinsic_get_var(intr, 0); - unsigned components = var->type->without_array()->components(); - if (var->type->without_array()->bit_size() == 64) { + unsigned components = glsl_get_components(glsl_without_array(var->type)); + if (glsl_get_bit_size(glsl_without_array(var->type)) == 64) { components *= 2; if (deref->deref_type == nir_deref_type_var) { var->type = glsl_vec_type(components); } else if (deref->deref_type == nir_deref_type_array) { var->type = - glsl_array_type(glsl_vec_type(components), var->type->array_size(), 0); + glsl_array_type(glsl_vec_type(components), glsl_array_size(var->type), 0); } else { nir_print_shader(b->shader, stderr); @@ -970,7 +970,7 @@ Lower64BitToVec2::load_deref_64_to_vec2(nir_intrinsic_instr *intr) if (deref->deref_type == nir_deref_type_array) { auto deref_array = nir_instr_as_deref(deref->parent.ssa->parent_instr); deref_array->type = var->type; - deref->type = deref_array->type->without_array(); + deref->type = glsl_without_array(deref_array->type); } intr->num_components = components; @@ -985,15 +985,15 @@ Lower64BitToVec2::store_64_to_vec2(nir_intrinsic_instr *intr) auto deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr); auto var = nir_intrinsic_get_var(intr, 0); - unsigned components = var->type->without_array()->components(); + unsigned components = glsl_get_components(glsl_without_array(var->type)); unsigned wrmask = nir_intrinsic_write_mask(intr); - if (var->type->without_array()->bit_size() == 64) { + if (glsl_get_bit_size(glsl_without_array(var->type)) == 64) { components *= 2; if (deref->deref_type == nir_deref_type_var) { var->type = glsl_vec_type(components); } else if (deref->deref_type == nir_deref_type_array) { var->type = - glsl_array_type(glsl_vec_type(components), var->type->array_size(), 0); + glsl_array_type(glsl_vec_type(components), glsl_array_size(var->type), 0); } else { nir_print_shader(b->shader, stderr); assert(0 && "Only lowring of var and array derefs supported\n"); @@ -1003,7 +1003,7 @@ Lower64BitToVec2::store_64_to_vec2(nir_intrinsic_instr *intr) if (deref->deref_type == nir_deref_type_array) { auto deref_array = nir_instr_as_deref(deref->parent.ssa->parent_instr); deref_array->type = var->type; - deref->type = deref_array->type->without_array(); + deref->type = glsl_without_array(deref_array->type); } intr->num_components = components; nir_intrinsic_set_write_mask(intr, wrmask == 1 ? 3 : 0xf); diff --git a/src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp b/src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp index 802f8009868..7d15ea2ee76 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir_lower_tex.cpp @@ -126,7 +126,7 @@ r600_nir_lower_int_tg4(nir_shader *shader) nir_foreach_uniform_variable(var, shader) { - if (var->type->is_sampler()) { + if (glsl_type_is_sampler(var->type)) { if (glsl_base_type_is_integer(var->type->sampled_type)) { need_lowering = true; } diff --git a/src/gallium/drivers/r600/sfn/sfn_shader.cpp b/src/gallium/drivers/r600/sfn/sfn_shader.cpp index 7cd90e38d2d..7af0000f45b 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader.cpp @@ -581,11 +581,11 @@ Shader::scan_shader(const nir_function *func) bool Shader::scan_uniforms(nir_variable *uniform) { - if (uniform->type->contains_atomic()) { - int natomics = uniform->type->atomic_size() / 4; /* ATOMIC_COUNTER_SIZE */ + if (glsl_contains_atomic(uniform->type)) { + int natomics = glsl_atomic_size(uniform->type) / 4; /* ATOMIC_COUNTER_SIZE */ m_nhwatomic += natomics; - if (uniform->type->is_array()) + if (glsl_type_is_array(uniform->type)) m_indirect_files |= 1 << TGSI_FILE_HW_ATOMIC; m_flags.set(sh_uses_atomics); @@ -610,10 +610,10 @@ Shader::scan_uniforms(nir_variable *uniform) m_atomics.push_back(atom); } - auto type = uniform->type->is_array() ? uniform->type->without_array() : uniform->type; - if (type->is_image() || uniform->data.mode == nir_var_mem_ssbo) { + auto type = glsl_without_array(uniform->type); + if (glsl_type_is_image(type) || uniform->data.mode == nir_var_mem_ssbo) { m_flags.set(sh_uses_images); - if (uniform->type->is_array() && !(uniform->data.mode == nir_var_mem_ssbo)) + if (glsl_type_is_array(uniform->type) && !(uniform->data.mode == nir_var_mem_ssbo)) m_indirect_files |= 1 << TGSI_FILE_IMAGE; }
