mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
st/va: Return correct width and height for encode/decode support
Previously this would return the largest possible buffer size, which is much larger than the codecs themselves support. This caused confusion when client applications attempted to decode 8K video thinking it was supported when it isn't. Signed-off-by: Mark Thompson <sw@jkqxz.net> Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
ba28c1c9f7
commit
31fb7bbe0b
1 changed files with 30 additions and 10 deletions
|
|
@ -476,17 +476,37 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
|
|||
attribs[i].value.value.p = NULL; /* ignore */
|
||||
i++;
|
||||
|
||||
attribs[i].type = VASurfaceAttribMaxWidth;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i = vl_video_buffer_max_size(pscreen);
|
||||
i++;
|
||||
if (config->entrypoint != PIPE_VIDEO_ENTRYPOINT_UNKNOWN) {
|
||||
attribs[i].type = VASurfaceAttribMaxWidth;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i =
|
||||
pscreen->get_video_param(pscreen,
|
||||
config->profile, config->entrypoint,
|
||||
PIPE_VIDEO_CAP_MAX_WIDTH);
|
||||
i++;
|
||||
|
||||
attribs[i].type = VASurfaceAttribMaxHeight;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i = vl_video_buffer_max_size(pscreen);
|
||||
i++;
|
||||
attribs[i].type = VASurfaceAttribMaxHeight;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i =
|
||||
pscreen->get_video_param(pscreen,
|
||||
config->profile, config->entrypoint,
|
||||
PIPE_VIDEO_CAP_MAX_HEIGHT);
|
||||
i++;
|
||||
} else {
|
||||
attribs[i].type = VASurfaceAttribMaxWidth;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i = vl_video_buffer_max_size(pscreen);
|
||||
i++;
|
||||
|
||||
attribs[i].type = VASurfaceAttribMaxHeight;
|
||||
attribs[i].value.type = VAGenericValueTypeInteger;
|
||||
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribs[i].value.value.i = vl_video_buffer_max_size(pscreen);
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i > *num_attribs) {
|
||||
*num_attribs = i;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue