From b7ea47ede627c7648e834a1fe56df0269ae4a035 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Tue, 25 Oct 2022 15:45:10 +0100 Subject: [PATCH] radv,aco: don't use lower_to_fragment_fetch_amd on GFX11+ FMask doesn't exist on GFX11. Have txf_ms take the fragment_fetch_amd path. Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 5 +++-- src/amd/vulkan/radv_shader.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 393fbf6..d90c995 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -9412,7 +9412,8 @@ get_const_vec(nir_ssa_def* vec, nir_const_value* cv[4]) void visit_tex(isel_context* ctx, nir_tex_instr* instr) { - assert(instr->op != nir_texop_txf_ms && instr->op != nir_texop_samples_identical); + assert((instr->op != nir_texop_txf_ms || ctx->program->gfx_level >= GFX11) && + instr->op != nir_texop_samples_identical); Builder bld(ctx->program, ctx->block); bool has_bias = false, has_lod = false, level_zero = false, has_compare = false, @@ -9826,7 +9827,7 @@ visit_tex(isel_context* ctx, nir_tex_instr* instr) args.insert(args.end(), coords.begin(), coords.end()); if (instr->op == nir_texop_txf || instr->op == nir_texop_fragment_fetch_amd || - instr->op == nir_texop_fragment_mask_fetch_amd) { + instr->op == nir_texop_fragment_mask_fetch_amd || instr->op == nir_texop_txf_ms) { aco_opcode op = level_zero || instr->sampler_dim == GLSL_SAMPLER_DIM_MS || instr->sampler_dim == GLSL_SAMPLER_DIM_SUBPASS_MS ? aco_opcode::image_load diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index f83ea05..c705287 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -981,12 +981,12 @@ radv_shader_spirv_to_nir(struct radv_device *device, const struct radv_pipeline_ NIR_PASS(_, nir, radv_nir_lower_ray_queries, device); } - static const nir_lower_tex_options tex_options = { + nir_lower_tex_options tex_options = { .lower_txp = ~0, .lower_txf_offset = true, .lower_tg4_offsets = true, .lower_txs_cube_array = true, - .lower_to_fragment_fetch_amd = true, + .lower_to_fragment_fetch_amd = device->physical_device->rad_info.gfx_level < GFX11, .lower_lod_zero_width = true, .lower_invalid_implicit_lod = true, .lower_array_layer_round_even = true, -- 2.7.4