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,
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
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,