gallium/radeon: add HUD queries for GPU temperature and clocks
Only the Radeon kernel driver exposed the GPU temperature and the shader/memory clocks, this implements the same functionality for the AMDGPU kernel driver. These queries will return 0 if the DRM version is less than 3.10, I don't explicitely check the version here because the query codepath is already a bit messy. v2: - rebase on top of master Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
0f39fb8500
commit
5bcfe90501
|
@ -1799,6 +1799,10 @@ static struct pipe_driver_query_info r600_driver_query_list[] = {
|
||||||
XG(GPIN, "GPIN_003", GPIN_NUM_SPI, UINT, AVERAGE),
|
XG(GPIN, "GPIN_003", GPIN_NUM_SPI, UINT, AVERAGE),
|
||||||
XG(GPIN, "GPIN_004", GPIN_NUM_SE, UINT, AVERAGE),
|
XG(GPIN, "GPIN_004", GPIN_NUM_SE, UINT, AVERAGE),
|
||||||
|
|
||||||
|
X("temperature", GPU_TEMPERATURE, UINT64, AVERAGE),
|
||||||
|
X("shader-clock", CURRENT_GPU_SCLK, HZ, AVERAGE),
|
||||||
|
X("memory-clock", CURRENT_GPU_MCLK, HZ, AVERAGE),
|
||||||
|
|
||||||
/* The following queries must be at the end of the list because their
|
/* The following queries must be at the end of the list because their
|
||||||
* availability is adjusted dynamically based on the DRM version. */
|
* availability is adjusted dynamically based on the DRM version. */
|
||||||
X("GPU-load", GPU_LOAD, UINT64, AVERAGE),
|
X("GPU-load", GPU_LOAD, UINT64, AVERAGE),
|
||||||
|
@ -1823,10 +1827,6 @@ static struct pipe_driver_query_info r600_driver_query_list[] = {
|
||||||
X("GPU-dma-busy", GPU_DMA_BUSY, UINT64, AVERAGE),
|
X("GPU-dma-busy", GPU_DMA_BUSY, UINT64, AVERAGE),
|
||||||
X("GPU-scratch-ram-busy", GPU_SCRATCH_RAM_BUSY, UINT64, AVERAGE),
|
X("GPU-scratch-ram-busy", GPU_SCRATCH_RAM_BUSY, UINT64, AVERAGE),
|
||||||
X("GPU-ce-busy", GPU_CE_BUSY, UINT64, AVERAGE),
|
X("GPU-ce-busy", GPU_CE_BUSY, UINT64, AVERAGE),
|
||||||
|
|
||||||
X("temperature", GPU_TEMPERATURE, UINT64, AVERAGE),
|
|
||||||
X("shader-clock", CURRENT_GPU_SCLK, HZ, AVERAGE),
|
|
||||||
X("memory-clock", CURRENT_GPU_MCLK, HZ, AVERAGE),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef X
|
#undef X
|
||||||
|
@ -1839,9 +1839,9 @@ static unsigned r600_get_num_queries(struct r600_common_screen *rscreen)
|
||||||
return ARRAY_SIZE(r600_driver_query_list);
|
return ARRAY_SIZE(r600_driver_query_list);
|
||||||
else if (rscreen->info.drm_major == 3) {
|
else if (rscreen->info.drm_major == 3) {
|
||||||
if (rscreen->chip_class >= VI)
|
if (rscreen->chip_class >= VI)
|
||||||
return ARRAY_SIZE(r600_driver_query_list) - 3;
|
return ARRAY_SIZE(r600_driver_query_list);
|
||||||
else
|
else
|
||||||
return ARRAY_SIZE(r600_driver_query_list) - 10;
|
return ARRAY_SIZE(r600_driver_query_list) - 7;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return ARRAY_SIZE(r600_driver_query_list) - 25;
|
return ARRAY_SIZE(r600_driver_query_list) - 25;
|
||||||
|
|
|
@ -471,9 +471,14 @@ static uint64_t amdgpu_query_value(struct radeon_winsys *rws,
|
||||||
amdgpu_query_heap_info(ws->dev, AMDGPU_GEM_DOMAIN_GTT, 0, &heap);
|
amdgpu_query_heap_info(ws->dev, AMDGPU_GEM_DOMAIN_GTT, 0, &heap);
|
||||||
return heap.heap_usage;
|
return heap.heap_usage;
|
||||||
case RADEON_GPU_TEMPERATURE:
|
case RADEON_GPU_TEMPERATURE:
|
||||||
|
amdgpu_query_sensor_info(ws->dev, AMDGPU_INFO_SENSOR_GPU_TEMP, 4, &retval);
|
||||||
|
return retval;
|
||||||
case RADEON_CURRENT_SCLK:
|
case RADEON_CURRENT_SCLK:
|
||||||
|
amdgpu_query_sensor_info(ws->dev, AMDGPU_INFO_SENSOR_GFX_SCLK, 4, &retval);
|
||||||
|
return retval;
|
||||||
case RADEON_CURRENT_MCLK:
|
case RADEON_CURRENT_MCLK:
|
||||||
return 0;
|
amdgpu_query_sensor_info(ws->dev, AMDGPU_INFO_SENSOR_GFX_MCLK, 4, &retval);
|
||||||
|
return retval;
|
||||||
case RADEON_GPU_RESET_COUNTER:
|
case RADEON_GPU_RESET_COUNTER:
|
||||||
assert(0);
|
assert(0);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue