[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 12:05:46 PDT 2015
On Mon, Oct 19, 2015 at 11:55 AM, Connor Abbott <cwabbott0 at gmail.com> wrote:
> On Mon, Oct 19, 2015 at 2:29 PM, Matt Turner <mattst88 at gmail.com> wrote:
>> 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.
>
> Wouldn't it be better to leave the comment here, replacing "The
> caller" with "we" and delete it from get_timestamp though? Especially
> since get_timestamp() is going to be used from the shader_clock
> implementation which actually wants the high 32 bits too.
Yep, that seems like a good plan.
More information about the mesa-dev
mailing list