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