[Mesa-dev] [PATCH 12/21] i965/fs: Clean up remaining uses of dispatch_width in the generator.

Jason Ekstrand jason at jlekstrand.net
Tue May 24 22:36:03 UTC 2016


Does this mean we can delete the field from brw_fs_generator?

On Tue, May 24, 2016 at 12:18 AM, Francisco Jerez <currojerez at riseup.net>
wrote:

> Most of these are bugs because the intended execution size of an
> instruction and the dispatch width of the shader aren't necessarily
> the same (especially in SIMD32 programs).
> ---
>  src/mesa/drivers/dri/i965/brw_eu.h             |  1 -
>  src/mesa/drivers/dri/i965/brw_eu_emit.c        |  3 +--
>  src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 13 +++++++------
>  3 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_eu.h
> b/src/mesa/drivers/dri/i965/brw_eu.h
> index 91e3401..b057f17 100644
> --- a/src/mesa/drivers/dri/i965/brw_eu.h
> +++ b/src/mesa/drivers/dri/i965/brw_eu.h
> @@ -281,7 +281,6 @@ void brw_svb_write(struct brw_codegen *p,
>                     bool   send_commit_msg);
>
>  void brw_fb_WRITE(struct brw_codegen *p,
> -                 int dispatch_width,
>                    struct brw_reg payload,
>                    struct brw_reg implied_header,
>                    unsigned msg_control,
> diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c
> b/src/mesa/drivers/dri/i965/brw_eu_emit.c
> index 10cbbe8..ff8e207 100644
> --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
> +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
> @@ -2342,7 +2342,6 @@ void brw_oword_block_read(struct brw_codegen *p,
>
>
>  void brw_fb_WRITE(struct brw_codegen *p,
> -                 int dispatch_width,
>                    struct brw_reg payload,
>                    struct brw_reg implied_header,
>                    unsigned msg_control,
> @@ -2358,7 +2357,7 @@ void brw_fb_WRITE(struct brw_codegen *p,
>     unsigned msg_type;
>     struct brw_reg dest, src0;
>
> -   if (dispatch_width == 16)
> +   if (brw_inst_exec_size(devinfo, p->current) >= BRW_EXECUTE_16)
>        dest = retype(vec16(brw_null_reg()), BRW_REGISTER_TYPE_UW);
>     else
>        dest = retype(vec8(brw_null_reg()), BRW_REGISTER_TYPE_UW);
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> index 71ac730..9751926 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
> @@ -229,7 +229,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
>
>
>     brw_fb_WRITE(p,
> -                dispatch_width,
>                  payload,
>                  implied_header,
>                  msg_control,
> @@ -547,7 +546,7 @@ fs_generator::generate_linterp(fs_inst *inst,
>      * See also: emit_interpolation_setup_gen4().
>      */
>     struct brw_reg delta_x = src[0];
> -   struct brw_reg delta_y = offset(src[0], dispatch_width / 8);
> +   struct brw_reg delta_y = offset(src[0], inst->exec_size / 8);
>     struct brw_reg interp = src[1];
>
>     if (devinfo->has_pln &&
> @@ -1206,10 +1205,11 @@
> fs_generator::generate_varying_pull_constant_load_gen4(fs_inst *inst,
>     uint32_t surf_index = index.ud;
>
>     uint32_t simd_mode, rlen, msg_type;
> -   if (dispatch_width == 16) {
> +   if (inst->exec_size == 16) {
>        simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
>        rlen = 8;
>     } else {
> +      assert(inst->exec_size == 8);
>        simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8;
>        rlen = 4;
>     }
> @@ -1267,11 +1267,12 @@
> fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
>     assert(index.type == BRW_REGISTER_TYPE_UD);
>
>     uint32_t simd_mode, rlen, mlen;
> -   if (dispatch_width == 16) {
> +   if (inst->exec_size == 16) {
>        mlen = 2;
>        rlen = 8;
>        simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
>     } else {
> +      assert(inst->exec_size == 8);
>        mlen = 1;
>        rlen = 4;
>        simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8;
> @@ -1407,9 +1408,9 @@ fs_generator::generate_set_sample_id(fs_inst *inst,
>            src0.type == BRW_REGISTER_TYPE_UD);
>
>     struct brw_reg reg = stride(src1, 1, 4, 0);
> -   if (devinfo->gen >= 8 || dispatch_width == 8) {
> +   if (devinfo->gen >= 8 || inst->exec_size == 8) {
>        brw_ADD(p, dst, src0, reg);
> -   } else if (dispatch_width == 16) {
> +   } else if (inst->exec_size == 16) {
>        brw_push_insn_state(p);
>        brw_set_default_exec_size(p, BRW_EXECUTE_8);
>        brw_set_default_compression_control(p, BRW_COMPRESSION_NONE);
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160524/1fad421c/attachment.html>


More information about the mesa-dev mailing list