[Mesa-dev] [PATCH] fix temperature display sign in hud

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu Sep 3 13:45:31 PDT 2015


Hi Benjamin,

In my opinion, your commit message is a bit confusing....
I think you meant "unit" instead of "sign", right?

Besides, I'm not sure we want to add a new unit for temperature but I 
could live with it.
Marek, what do you think?

See my comments, below.

On 09/03/2015 09:43 PM, Benjamin Bellec wrote:
> Signed-off-by: Benjamin Bellec <b.bellec at gmail.com>
> ---
>   src/gallium/auxiliary/hud/hud_context.c       | 5 +++++
>   src/gallium/drivers/radeon/r600_pipe_common.c | 2 +-
>   src/gallium/include/pipe/p_defines.h          | 1 +
>   src/mesa/state_tracker/st_cb_perfmon.c        | 5 +++++
>   4 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c
> index 95eed26..8cbd322 100644
> --- a/src/gallium/auxiliary/hud/hud_context.c
> +++ b/src/gallium/auxiliary/hud/hud_context.c
> @@ -243,6 +243,7 @@ number_to_human_readable(uint64_t num, uint64_t max_value,
>      static const char *hz_units[] =
>         {" Hz", " KHz", " MHz", " GHz"};
>      static const char *percent_units[] = {"%"};
> +   static const char *temperature_units[] = {"C"};
>   
>      const char **units;
>      unsigned max_unit;
> @@ -267,6 +268,10 @@ number_to_human_readable(uint64_t num, uint64_t max_value,
>         max_unit = ARRAY_SIZE(hz_units)-1;
>         units = hz_units;
>         break;
> +   case PIPE_DRIVER_QUERY_TYPE_TEMPERATURE:
> +      max_unit = ARRAY_SIZE(temperature_units)-1;
> +      units = temperature_units;
> +      break;
>      default:
>         if (max_value == 100) {
>            max_unit = ARRAY_SIZE(percent_units)-1;
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
> index ed5d1da..d6155ac 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.c
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.c
> @@ -722,7 +722,7 @@ static int r600_get_driver_query_info(struct pipe_screen *screen,
>   		{"VRAM-usage", R600_QUERY_VRAM_USAGE, {rscreen->info.vram_size}, PIPE_DRIVER_QUERY_TYPE_BYTES},
>   		{"GTT-usage", R600_QUERY_GTT_USAGE, {rscreen->info.gart_size}, PIPE_DRIVER_QUERY_TYPE_BYTES},
>   		{"GPU-load", R600_QUERY_GPU_LOAD, {100}},
> -		{"temperature", R600_QUERY_GPU_TEMPERATURE, {100}},
> +		{"temperature", R600_QUERY_GPU_TEMPERATURE, {120}, PIPE_DRIVER_QUERY_TYPE_TEMPERATURE},

Why did you increase the max value to 120? I'm just curious.

>   		{"shader-clock", R600_QUERY_CURRENT_GPU_SCLK, {0}, PIPE_DRIVER_QUERY_TYPE_HZ},
>   		{"memory-clock", R600_QUERY_CURRENT_GPU_MCLK, {0}, PIPE_DRIVER_QUERY_TYPE_HZ},
>   	};
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index 88e37e9..2b0c6be 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -821,6 +821,7 @@ enum pipe_driver_query_type
>      PIPE_DRIVER_QUERY_TYPE_BYTES        = 4,
>      PIPE_DRIVER_QUERY_TYPE_MICROSECONDS = 5,
>      PIPE_DRIVER_QUERY_TYPE_HZ           = 6,
> +   PIPE_DRIVER_QUERY_TYPE_TEMPERATURE  = 7,

Don't forget to update 'enum pipe_query_result' just above.

>   };
>   
>   enum pipe_driver_query_group_type
> diff --git a/src/mesa/state_tracker/st_cb_perfmon.c b/src/mesa/state_tracker/st_cb_perfmon.c
> index 1bb5be3..2eec99b 100644
> --- a/src/mesa/state_tracker/st_cb_perfmon.c
> +++ b/src/mesa/state_tracker/st_cb_perfmon.c
> @@ -383,6 +383,11 @@ st_init_perfmon(struct st_context *st)
>                  c->Maximum.f = 100.0f;
>                  c->Type = GL_PERCENTAGE_AMD;
>                  break;
> +            case PIPE_DRIVER_QUERY_TYPE_TEMPERATURE:
> +               c->Minimum.u32 = 0;
> +               c->Maximum.u32 = 120;
> +               c->Type = GL_UNSIGNED_INT;
> +               break;

This change is not needed because r600 doesn't currently expose 
GL_AMD_performance_monitor (a driver needs to expose a group of perf 
counters to enable it).

Please, drop this change for now.

>               default:
>                  unreachable("Invalid driver query type!");
>            }



More information about the mesa-dev mailing list