Mesa (main): ac/gpu_info: require amdgpu DRM 3.15.0 (kernel 4.12) from July 2017
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 27 05:35:31 UTC 2022
Module: Mesa
Branch: main
Commit: bc85e79bbac62815dfde6a6fe1719e23c1c01a36
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc85e79bbac62815dfde6a6fe1719e23c1c01a36
Author: Marek Olšák <marek.olsak at amd.com>
Date: Mon Jul 11 00:48:51 2022 -0400
ac/gpu_info: require amdgpu DRM 3.15.0 (kernel 4.12) from July 2017
to match the radeon requirement
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17411>
---
src/amd/common/ac_gpu_info.c | 58 +++++++------------------------
src/gallium/drivers/radeonsi/radeon_uvd.c | 2 +-
src/gallium/drivers/radeonsi/si_get.c | 2 +-
3 files changed, 15 insertions(+), 47 deletions(-)
diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
index d3f07bc1339..0c3163806b9 100644
--- a/src/amd/common/ac_gpu_info.c
+++ b/src/amd/common/ac_gpu_info.c
@@ -614,9 +614,9 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info)
assert(info->drm_major == 3);
info->is_amdgpu = true;
- if (info->drm_minor < 2) {
+ if (info->drm_minor < 15) {
fprintf(stderr, "amdgpu: DRM version is %u.%u.%u, but this driver is "
- "only compatible with 3.2.0 (kernel 4.7) or later.\n",
+ "only compatible with 3.15.0 (kernel 4.12) or later.\n",
info->drm_major, info->drm_minor, info->drm_patchlevel);
return false;
}
@@ -727,51 +727,19 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info)
return false;
}
- if (info->drm_minor >= 9) {
- struct drm_amdgpu_memory_info meminfo = {0};
+ struct drm_amdgpu_memory_info meminfo = {0};
- r = amdgpu_query_info(dev, AMDGPU_INFO_MEMORY, sizeof(meminfo), &meminfo);
- if (r) {
- fprintf(stderr, "amdgpu: amdgpu_query_info(memory) failed.\n");
- return false;
- }
-
- /* Note: usable_heap_size values can be random and can't be relied on. */
- info->gart_size_kb = DIV_ROUND_UP(meminfo.gtt.total_heap_size, 1024);
- info->vram_size_kb = DIV_ROUND_UP(fix_vram_size(meminfo.vram.total_heap_size), 1024);
- info->vram_vis_size_kb = DIV_ROUND_UP(meminfo.cpu_accessible_vram.total_heap_size, 1024);
- } else {
- /* This is a deprecated interface, which reports usable sizes
- * (total minus pinned), but the pinned size computation is
- * buggy, so the values returned from these functions can be
- * random.
- */
- struct amdgpu_heap_info vram, vram_vis, gtt;
-
- r = amdgpu_query_heap_info(dev, AMDGPU_GEM_DOMAIN_VRAM, 0, &vram);
- if (r) {
- fprintf(stderr, "amdgpu: amdgpu_query_heap_info(vram) failed.\n");
- return false;
- }
-
- r = amdgpu_query_heap_info(dev, AMDGPU_GEM_DOMAIN_VRAM, AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
- &vram_vis);
- if (r) {
- fprintf(stderr, "amdgpu: amdgpu_query_heap_info(vram_vis) failed.\n");
- return false;
- }
-
- r = amdgpu_query_heap_info(dev, AMDGPU_GEM_DOMAIN_GTT, 0, >t);
- if (r) {
- fprintf(stderr, "amdgpu: amdgpu_query_heap_info(gtt) failed.\n");
- return false;
- }
-
- info->gart_size_kb = DIV_ROUND_UP(gtt.heap_size, 1024);
- info->vram_size_kb = DIV_ROUND_UP(fix_vram_size(vram.heap_size), 1024);
- info->vram_vis_size_kb = DIV_ROUND_UP(vram_vis.heap_size, 1024);
+ r = amdgpu_query_info(dev, AMDGPU_INFO_MEMORY, sizeof(meminfo), &meminfo);
+ if (r) {
+ fprintf(stderr, "amdgpu: amdgpu_query_info(memory) failed.\n");
+ return false;
}
+ /* Note: usable_heap_size values can be random and can't be relied on. */
+ info->gart_size_kb = DIV_ROUND_UP(meminfo.gtt.total_heap_size, 1024);
+ info->vram_size_kb = DIV_ROUND_UP(fix_vram_size(meminfo.vram.total_heap_size), 1024);
+ info->vram_vis_size_kb = DIV_ROUND_UP(meminfo.cpu_accessible_vram.total_heap_size, 1024);
+
if (info->drm_minor >= 41) {
amdgpu_query_video_caps_info(dev, AMDGPU_INFO_VIDEO_CAPS_DECODE,
sizeof(info->dec_caps), &(info->dec_caps));
@@ -969,7 +937,7 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info)
/* Disable sparse mappings on GFX6 due to VM faults in CP DMA. Enable them once
* these faults are mitigated in software.
*/
- info->has_sparse_vm_mappings = info->gfx_level >= GFX7 && info->drm_minor >= 13;
+ info->has_sparse_vm_mappings = info->gfx_level >= GFX7;
info->has_scheduled_fence_dependency = info->drm_minor >= 28;
info->mid_command_buffer_preemption_enabled = device_info.ids_flags & AMDGPU_IDS_FLAGS_PREEMPTION;
info->has_tmz_support = has_tmz_support(dev, info, device_info.ids_flags);
diff --git a/src/gallium/drivers/radeonsi/radeon_uvd.c b/src/gallium/drivers/radeonsi/radeon_uvd.c
index f5d30a78ab1..c8b8cf54096 100644
--- a/src/gallium/drivers/radeonsi/radeon_uvd.c
+++ b/src/gallium/drivers/radeonsi/radeon_uvd.c
@@ -1317,7 +1317,7 @@ struct pipe_video_codec *si_common_uvd_create_decoder(struct pipe_context *conte
si_vid_clear_buffer(context, &dec->ctx);
}
- if (sctx->family >= CHIP_POLARIS10 && sctx->screen->info.drm_minor >= 3) {
+ if (sctx->family >= CHIP_POLARIS10) {
if (!si_vid_create_buffer(dec->screen, &dec->sessionctx, UVD_SESSION_CONTEXT_SIZE,
PIPE_USAGE_DEFAULT)) {
RVID_ERR("Can't allocated session ctx.\n");
diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
index a1115b08580..20243b4d6b3 100644
--- a/src/gallium/drivers/radeonsi/si_get.c
+++ b/src/gallium/drivers/radeonsi/si_get.c
@@ -997,7 +997,7 @@ static void si_query_memory_info(struct pipe_screen *screen, struct pipe_memory_
info->device_memory_evicted = ws->query_value(ws, RADEON_NUM_BYTES_MOVED) / 1024;
- if (sscreen->info.is_amdgpu && sscreen->info.drm_minor >= 4)
+ if (sscreen->info.is_amdgpu)
info->nr_device_memory_evictions = ws->query_value(ws, RADEON_NUM_EVICTIONS);
else
/* Just return the number of evicted 64KB pages. */
More information about the mesa-commit
mailing list