Mesa (master): ac: add function for querying video capabilities

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Apr 12 18:08:23 UTC 2021


Module: Mesa
Branch: master
Commit: 75a725e4c555c1f3f8d28120029cb64749c7cd6d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=75a725e4c555c1f3f8d28120029cb64749c7cd6d

Author: Leo Liu <leo.liu at amd.com>
Date:   Tue Feb 23 11:40:13 2021 -0500

ac: add function for querying video capabilities

It will be used to query caps of decode and encode
for hardware AMDGPU supports

Signed-off-by: Leo Liu <leo.liu at amd.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10095>

---

 src/amd/common/ac_gpu_info.c | 21 +++++++++++++++++++++
 src/amd/common/ac_gpu_info.h | 10 ++++++++++
 2 files changed, 31 insertions(+)

diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
index 888c6778034..9fce76e74b3 100644
--- a/src/amd/common/ac_gpu_info.c
+++ b/src/amd/common/ac_gpu_info.c
@@ -155,6 +155,11 @@ int amdgpu_query_gds_info(amdgpu_device_handle dev,
 {
    return -EINVAL;
 }
+int amdgpu_query_video_caps_info(amdgpu_device_handle dev, unsigned cap_type,
+                                 unsigned size, void *value)
+{
+   return -EINVAL;
+}
 const char *amdgpu_get_marketing_name(amdgpu_device_handle dev)
 {
    return NULL;
@@ -474,6 +479,22 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
    info->gart_size_kb = DIV_ROUND_UP(info->gart_size, 1024);
    info->vram_size_kb = DIV_ROUND_UP(info->vram_size, 1024);
 
+   if (info->drm_minor >= 41) {
+      r = amdgpu_query_video_caps_info(dev, AMDGPU_INFO_VIDEO_CAPS_DECODE,
+            sizeof(info->dec_caps), &(info->dec_caps));
+      if (r) {
+         fprintf(stderr, "amdgpu: amdgpu_query_video_caps_info for decode failed.\n");
+         return r;
+      }
+
+      r = amdgpu_query_video_caps_info(dev, AMDGPU_INFO_VIDEO_CAPS_ENCODE,
+            sizeof(info->enc_caps), &(info->enc_caps));
+      if (r) {
+         fprintf(stderr, "amdgpu: amdgpu_query_video_caps_info for encode failed.\n");
+         return r;
+      }
+   }
+
    /* Add some margin of error, though this shouldn't be needed in theory. */
    info->all_vram_visible = info->vram_size * 0.9 < info->vram_vis_size;
 
diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h
index b3456a35c70..546c1e9fb5d 100644
--- a/src/amd/common/ac_gpu_info.h
+++ b/src/amd/common/ac_gpu_info.h
@@ -136,6 +136,16 @@ struct radeon_info {
    uint32_t uvd_fw_version;
    uint32_t vce_fw_version;
    uint32_t vce_harvest_config;
+   struct video_caps_info {
+      struct {
+         uint32_t valid;
+         uint32_t max_width;
+         uint32_t max_height;
+         uint32_t max_pixels_per_frame;
+         uint32_t max_level;
+         uint32_t pad;
+      } codec_info[8]; /* the number of available codecs */
+   } dec_caps, enc_caps;
 
    /* Kernel & winsys capabilities. */
    uint32_t drm_major; /* version */



More information about the mesa-commit mailing list