[Mesa-dev] [PATCH 5/7] i965/fs: move the fs_reg::smear() from get_timestamp() to the callers

Matt Turner mattst88 at gmail.com
Mon Oct 19 11:29:05 PDT 2015


On Mon, Oct 19, 2015 at 7:45 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> We're about to reuse get_timestamp() for the nir_intrinsic_shader_clock.
> The in the latter the generalisation does not apply, so move the smear()
> where needed. This also makes the function analogous to the vec4 one.
>
> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 30 +++++++++++++++++++++---------
>  1 file changed, 21 insertions(+), 9 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index a2fd441..81a6a29 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -521,6 +521,14 @@ fs_visitor::get_timestamp(const fs_builder &bld)
>      */
>     bld.group(4, 0).exec_all().MOV(dst, ts);
>
> +   return dst;
> +}
> +
> +void
> +fs_visitor::emit_shader_time_begin()
> +{
> +   shader_start_time = get_timestamp(bld.annotate("shader time start"));
> +
>     /* The caller wants the low 32 bits of the timestamp.  Since it's running
>      * at the GPU clock rate of ~1.2ghz, it will roll over every ~3 seconds,
>      * which is plenty of time for our purposes.  It is identical across the
> @@ -531,15 +539,7 @@ fs_visitor::get_timestamp(const fs_builder &bld)
>      * else that might disrupt timing) by setting smear to 2 and checking if
>      * that field is != 0.
>      */
> -   dst.set_smear(0);
> -
> -   return dst;
> -}
> -
> -void
> -fs_visitor::emit_shader_time_begin()
> -{
> -   shader_start_time = get_timestamp(bld.annotate("shader time start"));
> +   shader_start_time.set_smear(0);
>  }
>
>  void
> @@ -553,6 +553,18 @@ fs_visitor::emit_shader_time_end()
>
>     fs_reg shader_end_time = get_timestamp(ibld);
>
> +   /* The caller wants the low 32 bits of the timestamp.  Since it's running
> +    * at the GPU clock rate of ~1.2ghz, it will roll over every ~3 seconds,
> +    * which is plenty of time for our purposes.  It is identical across the
> +    * EUs, but since it's tracking GPU core speed it will increment at a
> +    * varying rate as render P-states change.
> +    *
> +    * The caller could also check if render P-states have changed (or anything
> +    * else that might disrupt timing) by setting smear to 2 and checking if
> +    * that field is != 0.
> +    */

I wouldn't bother copying the comment. It's immediately above this
function and very visible if reading this code.


More information about the mesa-dev mailing list