mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
frontends/va: Ignore requested size when creating VAEncCodedBufferType
The buffer data is not directly accessible to application and it's
internally used to only store VACodedBufferSegment struct.
Ignore the size requested by application and instead allocate
sizeof(VACodedBufferSegment). Use calloc to zero out the struct.
This can save significant amount of memory, for example FFmpeg
will request up to tens of MB for single buffer.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6462
Reviewed-by: Thong Thai <thong.thai@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24410>
(cherry picked from commit 7bcbfae87c)
This commit is contained in:
parent
2cdeef1c40
commit
d9e47fae19
2 changed files with 6 additions and 3 deletions
|
|
@ -1453,7 +1453,7 @@
|
|||
"description": "frontends/va: Ignore requested size when creating VAEncCodedBufferType",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -57,7 +57,11 @@ vlVaCreateBuffer(VADriverContextP ctx, VAContextID context, VABufferType type,
|
|||
buf->type = type;
|
||||
buf->size = size;
|
||||
buf->num_elements = num_elements;
|
||||
buf->data = MALLOC(size * num_elements);
|
||||
|
||||
if (buf->type == VAEncCodedBufferType)
|
||||
buf->data = CALLOC(1, sizeof(VACodedBufferSegment));
|
||||
else
|
||||
buf->data = MALLOC(size * num_elements);
|
||||
|
||||
if (!buf->data) {
|
||||
FREE(buf);
|
||||
|
|
@ -161,7 +165,6 @@ vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuff)
|
|||
if (buf->type == VAEncCodedBufferType) {
|
||||
((VACodedBufferSegment*)buf->data)->buf = *pbuff;
|
||||
((VACodedBufferSegment*)buf->data)->size = buf->coded_size;
|
||||
((VACodedBufferSegment*)buf->data)->next = NULL;
|
||||
*pbuff = buf->data;
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue