@@ -7933,8 +7933,6 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
79337933 char **error_str)
79347934{
79357935 const struct gen_device_info *devinfo = compiler->devinfo ;
7936- bool simd16_failed = false ;
7937- bool simd16_spilled = false ;
79387936
79397937 shader = brw_nir_apply_sampler_key (shader, compiler, &key->tex , true );
79407938 brw_nir_lower_fs_inputs (shader, devinfo, key);
@@ -8000,30 +7998,20 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
80007998 shader_time_index16);
80017999 v16.import_uniforms (&v8);
80028000 if (!v16.run_fs (allow_spilling, use_rep_send)) {
8003- simd16_failed = true ;
80048001 compiler->shader_perf_log (log_data,
80058002 " SIMD16 shader failed to compile: %s" ,
80068003 v16.fail_msg );
80078004 } else {
8008- simd16_spilled = v16.spilled_any_registers ;
80098005 simd16_cfg = v16.cfg ;
80108006 prog_data->dispatch_grf_start_reg_16 = v16.payload .num_regs ;
80118007 prog_data->reg_blocks_16 = brw_register_blocks (v16.grf_used );
80128008 }
80138009 }
80148010
80158011 /* Currently, the compiler only supports SIMD32 on SNB+ */
8016- const brw_simd32_heuristics_control *ctrl = &compiler->simd32_heuristics_control ;
8017- uint64_t mrts = shader->info .outputs_written << FRAG_RESULT_DATA0;
8018-
80198012 if (v8.max_dispatch_width >= 32 && !use_rep_send &&
80208013 compiler->devinfo ->gen >= 6 &&
8021- (unlikely (INTEL_DEBUG & DEBUG_DO32) ||
8022- (unlikely (INTEL_DEBUG & DEBUG_HEUR32) &&
8023- !simd16_failed && !simd16_spilled &&
8024- (!ctrl->mrt_check ||
8025- (ctrl->mrt_check &&
8026- u_count_bits64 (&mrts) <= ctrl->max_mrts ))))) {
8014+ unlikely (INTEL_DEBUG & DEBUG_DO32)) {
80278015 /* Try a SIMD32 compile */
80288016 fs_visitor v32 (compiler, log_data, mem_ctx, key,
80298017 &prog_data->base , prog, shader, 32 ,
@@ -8034,12 +8022,9 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
80348022 " SIMD32 shader failed to compile: %s" ,
80358023 v32.fail_msg );
80368024 } else {
8037- if (likely (!(INTEL_DEBUG & DEBUG_HEUR32)) ||
8038- v32.run_heuristic (ctrl)) {
8039- simd32_cfg = v32.cfg ;
8040- prog_data->dispatch_grf_start_reg_32 = v32.payload .num_regs ;
8041- prog_data->reg_blocks_32 = brw_register_blocks (v32.grf_used );
8042- }
8025+ simd32_cfg = v32.cfg ;
8026+ prog_data->dispatch_grf_start_reg_32 = v32.payload .num_regs ;
8027+ prog_data->reg_blocks_32 = brw_register_blocks (v32.grf_used );
80438028 }
80448029 }
80458030
@@ -8118,49 +8103,13 @@ brw_compile_fs(const struct brw_compiler *compiler, void *log_data,
81188103 }
81198104
81208105 if (simd32_cfg) {
8121- uint32_t offset = g.generate_code (simd32_cfg, 32 );
8122-
8123- if (unlikely (INTEL_DEBUG & DEBUG_DO32) ||
8124- (unlikely (INTEL_DEBUG & DEBUG_HEUR32) &&
8125- (!simd16_cfg ||
8126- (simd16_cfg &&
8127- (!ctrl->inst_count_check ||
8128- (ctrl->inst_count_check &&
8129- (float )g.get_inst_count (32 ) / (float )g.get_inst_count (16 ) <= ctrl->inst_count_ratio )))))) {
8130- prog_data->dispatch_32 = true ;
8131- prog_data->prog_offset_32 = offset;
8132- }
8106+ prog_data->dispatch_32 = true ;
8107+ prog_data->prog_offset_32 = g.generate_code (simd32_cfg, 32 );
81338108 }
81348109
81358110 return g.get_assembly ();
81368111}
81378112
8138- bool
8139- fs_visitor::run_heuristic (const struct brw_simd32_heuristics_control *ctrl) {
8140- int grouped_sends = 0 ;
8141- int max_grouped_sends = 0 ;
8142- bool pass = true ;
8143-
8144- foreach_block_and_inst (block, fs_inst, inst, cfg) {
8145- if (inst->opcode >= SHADER_OPCODE_TEX && inst->opcode <= SHADER_OPCODE_SAMPLEINFO_LOGICAL) {
8146- ++grouped_sends;
8147- } else if (grouped_sends > 0 ) {
8148- if (grouped_sends > max_grouped_sends) {
8149- max_grouped_sends = grouped_sends;
8150- }
8151- grouped_sends = 0 ;
8152- }
8153- }
8154-
8155- if (ctrl->grouped_sends_check ) {
8156- if (max_grouped_sends > ctrl->max_grouped_sends ) {
8157- pass = false ;
8158- }
8159- }
8160-
8161- return pass;
8162- }
8163-
81648113fs_reg *
81658114fs_visitor::emit_cs_work_group_id_setup ()
81668115{
0 commit comments