diff options
author | Samuel Pitoiset <[email protected]> | 2018-08-22 14:42:51 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2018-08-22 15:23:11 +0200 |
commit | 4c43ec461de4f122d5d6566361d064c816e4ef69 (patch) | |
tree | 66a6527088ac37b8326de2c169c8211b91bdcbc5 | |
parent | 24ee53231da84a1be5ec08abebe8a2ff6aa019ca (diff) |
ac/nir: fix getting GLSL type of array of samplers for TG4
This fixes a crash in build_tex_intrinsic() when trying to
launch the Basemark GPU benchmark on GFX8. It looks like
there is still something wrong because some frames are black.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106980
CC: 18.2 <[email protected]>
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 700e48e14b7..90df1e00623 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1163,7 +1163,8 @@ static LLVMValueRef lower_gather4_integer(struct ac_llvm_context *ctx, struct ac_image_args *args, const nir_tex_instr *instr) { - enum glsl_base_type stype = glsl_get_sampler_result_type(var->type); + const struct glsl_type *type = glsl_without_array(var->type); + enum glsl_base_type stype = glsl_get_sampler_result_type(type); LLVMValueRef half_texel[2]; LLVMValueRef compare_cube_wa = NULL; LLVMValueRef result; @@ -1348,7 +1349,8 @@ static LLVMValueRef build_tex_intrinsic(struct ac_nir_context *ctx, if (instr->op == nir_texop_tg4 && ctx->ac.chip_class <= VI) { nir_deref_instr *texture_deref_instr = get_tex_texture_deref(instr); nir_variable *var = nir_deref_instr_get_variable(texture_deref_instr); - enum glsl_base_type stype = glsl_get_sampler_result_type(var->type); + const struct glsl_type *type = glsl_without_array(var->type); + enum glsl_base_type stype = glsl_get_sampler_result_type(type); if (stype == GLSL_TYPE_UINT || stype == GLSL_TYPE_INT) { return lower_gather4_integer(&ctx->ac, var, args, instr); } |