diff --git a/src/intel/compiler/brw_fs_thread_payload.cpp b/src/intel/compiler/brw_fs_thread_payload.cpp index b78567fa2d1..1a52c420d0d 100644 --- a/src/intel/compiler/brw_fs_thread_payload.cpp +++ b/src/intel/compiler/brw_fs_thread_payload.cpp @@ -230,7 +230,7 @@ setup_fs_payload_gfx20(fs_thread_payload &payload, } static inline void -setup_fs_payload_gfx6(fs_thread_payload &payload, +setup_fs_payload_gfx9(fs_thread_payload &payload, const fs_visitor &v, bool &source_depth_to_render_target) { @@ -238,7 +238,7 @@ setup_fs_payload_gfx6(fs_thread_payload &payload, const unsigned payload_width = MIN2(16, v.dispatch_width); assert(v.dispatch_width % payload_width == 0); - assert(v.devinfo->ver >= 6 && v.devinfo->ver < 20); + assert(v.devinfo->ver < 20); payload.num_regs = 0; @@ -285,7 +285,6 @@ setup_fs_payload_gfx6(fs_thread_payload &payload, /* R32-33: MSAA input coverage mask */ if (prog_data->uses_sample_mask) { - assert(v.devinfo->ver >= 7); payload.sample_mask_in_reg[j] = payload.num_regs; payload.num_regs += payload_width / 8; } @@ -303,150 +302,6 @@ setup_fs_payload_gfx6(fs_thread_payload &payload, } } -#undef P /* prompted depth */ -#undef C /* computed */ -#undef N /* non-promoted? */ - -#define P 0 -#define C 1 -#define N 2 - -static const struct { - GLuint mode:2; - GLuint sd_present:1; - GLuint sd_to_rt:1; - GLuint dd_present:1; - GLuint ds_present:1; -} wm_iz_table[BRW_WM_IZ_BIT_MAX] = -{ - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 0 }, - { N, 0, 1, 0, 0 }, - { N, 0, 1, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { C, 0, 1, 1, 0 }, - { C, 0, 1, 1, 0 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 0 }, - { C, 0, 1, 1, 0 }, - { C, 0, 1, 1, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 0 }, - { N, 0, 1, 0, 0 }, - { N, 0, 1, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { C, 0, 1, 1, 0 }, - { C, 0, 1, 1, 0 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 0 }, - { C, 0, 1, 1, 0 }, - { C, 0, 1, 1, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 1 }, - { N, 0, 1, 0, 1 }, - { N, 0, 1, 0, 1 }, - { P, 0, 0, 0, 0 }, - { P, 0, 0, 0, 0 }, - { C, 0, 1, 1, 1 }, - { C, 0, 1, 1, 1 }, - { P, 0, 0, 0, 0 }, - { N, 1, 1, 0, 1 }, - { C, 0, 1, 1, 1 }, - { C, 0, 1, 1, 1 }, - { P, 0, 0, 0, 0 }, - { C, 0, 0, 0, 1 }, - { P, 0, 0, 0, 0 }, - { C, 0, 1, 0, 1 }, - { P, 0, 0, 0, 0 }, - { C, 1, 1, 0, 1 }, - { C, 0, 1, 0, 1 }, - { C, 0, 1, 0, 1 }, - { P, 0, 0, 0, 0 }, - { C, 1, 1, 1, 1 }, - { C, 0, 1, 1, 1 }, - { C, 0, 1, 1, 1 }, - { P, 0, 0, 0, 0 }, - { C, 1, 1, 1, 1 }, - { C, 0, 1, 1, 1 }, - { C, 0, 1, 1, 1 } -}; - -/** - * \param line_aa BRW_NEVER, BRW_ALWAYS or BRW_SOMETIMES - * \param lookup bitmask of BRW_WM_IZ_* flags - */ -static inline void -setup_fs_payload_gfx4(fs_thread_payload &payload, - const fs_visitor &v, - bool &source_depth_to_render_target, - bool &runtime_check_aads_emit) -{ - assert(v.dispatch_width <= 16); - - struct brw_wm_prog_data *prog_data = brw_wm_prog_data(v.prog_data); - brw_wm_prog_key *key = (brw_wm_prog_key *) v.key; - - GLuint reg = 1; - bool kill_stats_promoted_workaround = false; - int lookup = key->iz_lookup; - - assert(lookup < BRW_WM_IZ_BIT_MAX); - - /* Crazy workaround in the windowizer, which we need to track in - * our register allocation and render target writes. See the "If - * statistics are enabled..." paragraph of 11.5.3.2: Early Depth - * Test Cases [Pre-DevGT] of the 3D Pipeline - Windower B-Spec. - */ - if (key->stats_wm && - (lookup & BRW_WM_IZ_PS_KILL_ALPHATEST_BIT) && - wm_iz_table[lookup].mode == P) { - kill_stats_promoted_workaround = true; - } - - payload.subspan_coord_reg[0] = reg++; - - if (wm_iz_table[lookup].sd_present || prog_data->uses_src_depth || - kill_stats_promoted_workaround) { - payload.source_depth_reg[0] = reg; - reg += 2; - } - - if (wm_iz_table[lookup].sd_to_rt || kill_stats_promoted_workaround) - source_depth_to_render_target = true; - - if (wm_iz_table[lookup].ds_present || key->line_aa != BRW_NEVER) { - payload.aa_dest_stencil_reg[0] = reg; - runtime_check_aads_emit = - !wm_iz_table[lookup].ds_present && key->line_aa == BRW_SOMETIMES; - reg++; - } - - if (wm_iz_table[lookup].dd_present) { - payload.dest_depth_reg[0] = reg; - reg+=2; - } - - payload.num_regs = reg; -} - -#undef P /* prompted depth */ -#undef C /* computed */ -#undef N /* non-promoted? */ - fs_thread_payload::fs_thread_payload(const fs_visitor &v, bool &source_depth_to_render_target, bool &runtime_check_aads_emit) @@ -462,11 +317,8 @@ fs_thread_payload::fs_thread_payload(const fs_visitor &v, { if (v.devinfo->ver >= 20) setup_fs_payload_gfx20(*this, v, source_depth_to_render_target); - else if (v.devinfo->ver >= 6) - setup_fs_payload_gfx6(*this, v, source_depth_to_render_target); else - setup_fs_payload_gfx4(*this, v, source_depth_to_render_target, - runtime_check_aads_emit); + setup_fs_payload_gfx9(*this, v, source_depth_to_render_target); } cs_thread_payload::cs_thread_payload(const fs_visitor &v)