mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
hwcontext_vulkan: check for memory size before choosing type
It makes allocation a bit more robust in case some weird device with weird drivers which segments memory in weird ways appears.
This commit is contained in:
parent
ff29ca2f1f
commit
9cf1811d3d
@ -1270,12 +1270,18 @@ static int alloc_mem(AVHWDeviceContext *ctx, VkMemoryRequirements *req,
|
||||
/* The vulkan spec requires memory types to be sorted in the "optimal"
|
||||
* order, so the first matching type we find will be the best/fastest one */
|
||||
for (int i = 0; i < p->mprops.memoryTypeCount; i++) {
|
||||
const VkMemoryType *type = &p->mprops.memoryTypes[i];
|
||||
|
||||
/* The memory type must be supported by the requirements (bitfield) */
|
||||
if (!(req->memoryTypeBits & (1 << i)))
|
||||
continue;
|
||||
|
||||
/* The memory type flags must include our properties */
|
||||
if ((p->mprops.memoryTypes[i].propertyFlags & req_flags) != req_flags)
|
||||
if ((type->propertyFlags & req_flags) != req_flags)
|
||||
continue;
|
||||
|
||||
/* The memory type must be large enough */
|
||||
if (req->size > p->mprops.memoryHeaps[type->heapIndex].size)
|
||||
continue;
|
||||
|
||||
/* Found a suitable memory type */
|
||||
|
Loading…
Reference in New Issue
Block a user