}
info->has_3d_cube_border_color_mipmap = info->has_graphics || info->family == CHIP_MI100;
+ info->has_image_opcodes = debug_get_bool_option("AMD_IMAGE_OPCODES",
+ info->has_graphics || info->family < CHIP_GFX940);
info->never_stop_sq_perf_counters = info->gfx_level == GFX10 ||
info->gfx_level == GFX10_3;
info->never_send_perfcounter_stop = info->gfx_level == GFX11;
fprintf(f, " has_ls_vgpr_init_bug = %i\n", info->has_ls_vgpr_init_bug);
fprintf(f, " has_32bit_predication = %i\n", info->has_32bit_predication);
fprintf(f, " has_3d_cube_border_color_mipmap = %i\n", info->has_3d_cube_border_color_mipmap);
+ fprintf(f, " has_image_opcodes = %i\n", info->has_image_opcodes);
fprintf(f, " never_stop_sq_perf_counters = %i\n", info->never_stop_sq_perf_counters);
fprintf(f, " has_sqtt_rb_harvest_bug = %i\n", info->has_sqtt_rb_harvest_bug);
fprintf(f, " has_sqtt_auto_flush_mode_bug = %i\n", info->has_sqtt_auto_flush_mode_bug);
bool has_cs_regalloc_hang_bug;
bool has_32bit_predication;
bool has_3d_cube_border_color_mipmap;
+ bool has_image_opcodes;
bool never_stop_sq_perf_counters;
bool has_sqtt_rb_harvest_bug;
bool has_sqtt_auto_flush_mode_bug;
if (r)
return r;
+ /* Images are emulated on some CDNA chips. */
+ if (!info->has_image_opcodes)
+ mode = RADEON_SURF_MODE_LINEAR_ALIGNED;
+
if (info->family_id >= FAMILY_AI)
r = gfx9_compute_surface(addrlib, info, config, mode, surf);
else
info->num_physical_sgprs_per_simd = 512;
info->has_3d_cube_border_color_mipmap = true;
+ info->has_image_opcodes = true;
if (info->family == CHIP_GFX1100 || info->family == CHIP_GFX1101)
info->num_physical_wave64_vgprs_per_simd = 768;