frontends/va: Allow creating DRM PRIME surfaces without surface descriptor
If we don't have surface descriptor, treat this as a hint from application that it will export the surface later. This matches Intel driver behavior. Reviewed-by: Leo Liu <leo.liu@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32970>
This commit is contained in:
@@ -1099,7 +1099,7 @@ vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format,
|
|||||||
const VADRMFormatModifierList *modifier_list;
|
const VADRMFormatModifierList *modifier_list;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
struct pipe_video_buffer templat;
|
struct pipe_video_buffer templat = {0};
|
||||||
struct pipe_screen *pscreen;
|
struct pipe_screen *pscreen;
|
||||||
int i;
|
int i;
|
||||||
int memory_type;
|
int memory_type;
|
||||||
@@ -1228,18 +1228,20 @@ vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format,
|
|||||||
break;
|
break;
|
||||||
case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2:
|
case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2:
|
||||||
case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3:
|
case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3:
|
||||||
if (!prime_desc)
|
/* If we don't have surface descriptor, use it as a hint
|
||||||
return VA_STATUS_ERROR_INVALID_PARAMETER;
|
* that application will export the surface later. */
|
||||||
|
if (!prime_desc) {
|
||||||
expected_fourcc = prime_desc->fourcc;
|
templat.bind |= PIPE_BIND_SHARED;
|
||||||
|
memory_type = VA_SURFACE_ATTRIB_MEM_TYPE_VA;
|
||||||
|
} else {
|
||||||
|
expected_fourcc = prime_desc->fourcc;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&templat, 0, sizeof(templat));
|
|
||||||
|
|
||||||
if (!modifiers)
|
if (!modifiers)
|
||||||
templat.interlaced =
|
templat.interlaced =
|
||||||
!pscreen->get_video_param(pscreen, PIPE_VIDEO_PROFILE_UNKNOWN,
|
!pscreen->get_video_param(pscreen, PIPE_VIDEO_PROFILE_UNKNOWN,
|
||||||
|
Reference in New Issue
Block a user