[Mesa-dev] [PATCH 41/41] SQUASH: i965/fs: Force a high register for the final FB write

Matt Turner mattst88 at gmail.com
Tue Sep 23 11:32:03 PDT 2014


On Sat, Sep 20, 2014 at 10:23 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> ---
>  src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp | 24 ++++++++++++++++++++++-
>  src/mesa/drivers/dri/i965/intel_screen.h          |  5 +++++
>  2 files changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
> index b42f1e5..41e8855 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
> @@ -116,8 +116,10 @@ brw_alloc_reg_set(struct intel_screen *screen, int reg_width)
>     /* Compute the total number of registers across all classes. */
>     int ra_reg_count = 0;
>     for (int i = 0; i < class_count; i++) {
> +      screen->wm_reg_sets[index].class_first_reg[i] = ra_reg_count;
>        ra_reg_count += base_reg_count - (class_sizes[i] - 1);
>     }
> +   screen->wm_reg_sets[index].class_first_reg[class_count] = ra_reg_count;
>
>     uint8_t *ra_reg_to_grf = ralloc_array(screen, uint8_t, ra_reg_count);
>     struct ra_regs *regs = ra_alloc_reg_set(screen, ra_reg_count);
> @@ -469,9 +471,29 @@ fs_visitor::assign_regs(bool allow_spilling)
>     }
>
>     setup_payload_interference(g, payload_node_count, first_payload_node);
> -   if (brw->gen >= 7)
> +   if (brw->gen >= 7) {
>        setup_mrf_hack_interference(g, first_mrf_hack_node);
>
> +      foreach_in_list(fs_inst, inst, &instructions) {

foreach_block_and_inst()


More information about the mesa-dev mailing list