[Mesa-dev] [PATCH 12/22] i965/vec4: split DF instructions and later duplicate its execsize in IVB/VLV
Matt Turner
mattst88 at gmail.com
Thu Jan 12 23:39:52 UTC 2017
On Thu, Jan 5, 2017 at 5:07 AM, Samuel Iglesias Gonsálvez
<siglesias at igalia.com> wrote:
> We need to split DF instructions in two on IVB/VLV as it needs an
> execsize 8 to process 4 DF values (one GRF in total).
>
> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
> src/mesa/drivers/dri/i965/brw_ir_vec4.h | 1 +
> src/mesa/drivers/dri/i965/brw_vec4.cpp | 20 +++++++++++++++++++-
> src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 15 +++++++++++++--
> 3 files changed, 33 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_ir_vec4.h b/src/mesa/drivers/dri/i965/brw_ir_vec4.h
> index 57fc6be..9291be0 100644
> --- a/src/mesa/drivers/dri/i965/brw_ir_vec4.h
> +++ b/src/mesa/drivers/dri/i965/brw_ir_vec4.h
> @@ -291,6 +291,7 @@ public:
> bool can_do_writemask(const struct gen_device_info *devinfo);
> bool can_change_types() const;
> bool has_source_and_destination_hazard() const;
> + unsigned exec_data_size() const;
>
> bool is_align1_partial_write()
> {
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index b5e846d..6ba85d7 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -301,6 +301,19 @@ vec4_instruction::can_change_types() const
> !src[1].abs && !src[1].negate));
> }
>
> +unsigned
> +vec4_instruction::exec_data_size() const
> +{
> + unsigned exec_data_size = 0;
> +
> + for (int i = 0; i < 3; i++) {
> + if (this->src[i].type != BAD_FILE)
> + exec_data_size = MAX2(exec_data_size, type_sz(this->src[i].type));
Indentation, use braces.
> + }
> +
> + return exec_data_size;
> +}
I think this should become a static inline function for the reasons
Curro mentioned in the fs patch.
More information about the mesa-dev
mailing list