mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
virgl/video: Check driver supported profiles and entrypoints
Since the support of video by the device and the driver may be different, it is necessary to check on the driver side as well. Signed-off-by: Feng Jiang <jiangfeng@kylinos.cn> Reviewed-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18831>
This commit is contained in:
parent
ebf6158bd0
commit
8b48e11179
1 changed files with 21 additions and 5 deletions
|
|
@ -471,6 +471,7 @@ virgl_get_video_param(struct pipe_screen *screen,
|
|||
enum pipe_video_cap param)
|
||||
{
|
||||
unsigned i;
|
||||
bool drv_supported;
|
||||
struct virgl_video_caps *vcaps = NULL;
|
||||
struct virgl_screen *vscreen;
|
||||
|
||||
|
|
@ -481,11 +482,26 @@ virgl_get_video_param(struct pipe_screen *screen,
|
|||
if (vscreen->caps.caps.v2.num_video_caps > ARRAY_SIZE(vscreen->caps.caps.v2.video_caps))
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < vscreen->caps.caps.v2.num_video_caps; i++) {
|
||||
if (vscreen->caps.caps.v2.video_caps[i].profile == profile &&
|
||||
vscreen->caps.caps.v2.video_caps[i].entrypoint == entrypoint) {
|
||||
vcaps = &vscreen->caps.caps.v2.video_caps[i];
|
||||
break;
|
||||
/* Profiles and entrypoints supported by the driver */
|
||||
switch (u_reduce_video_profile(profile)) {
|
||||
case PIPE_VIDEO_FORMAT_MPEG4_AVC: /* fall through */
|
||||
case PIPE_VIDEO_FORMAT_HEVC:
|
||||
drv_supported = (entrypoint == PIPE_VIDEO_ENTRYPOINT_BITSTREAM ||
|
||||
entrypoint == PIPE_VIDEO_ENTRYPOINT_ENCODE);
|
||||
break;
|
||||
default:
|
||||
drv_supported = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (drv_supported) {
|
||||
/* Check if the device supports it, vcaps is NULL means not supported */
|
||||
for (i = 0; i < vscreen->caps.caps.v2.num_video_caps; i++) {
|
||||
if (vscreen->caps.caps.v2.video_caps[i].profile == profile &&
|
||||
vscreen->caps.caps.v2.video_caps[i].entrypoint == entrypoint) {
|
||||
vcaps = &vscreen->caps.caps.v2.video_caps[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue