mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
iris: Allow shared scanout buffer to be placed in smem as well
i915 and Xe kmd allows scanout to display of prime buffers placed in smem. Allowing shared and scanout bos to be placed in smem and lmem allows the dma buf to work in some cases that only lmem is not enough. Fixes:c10ff19704("iris: Place scanout buffers only into lmem for discrete GPUs") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8867 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8766 Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Tested-by: Tapani Pälli <tapani.palli@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22665> (cherry picked from commitec6d520eb9)
This commit is contained in:
parent
192de0108c
commit
91859a9a54
2 changed files with 9 additions and 8 deletions
|
|
@ -337,7 +337,7 @@
|
|||
"description": "iris: Allow shared scanout buffer to be placed in smem as well",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "c10ff1970461f59a1a0861ba79c3ea24ed4904aa"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -776,11 +776,13 @@ fail:
|
|||
static enum iris_heap
|
||||
flags_to_heap(struct iris_bufmgr *bufmgr, unsigned flags)
|
||||
{
|
||||
if (bufmgr->vram.size > 0 &&
|
||||
!(flags & BO_ALLOC_SMEM) &&
|
||||
!(flags & BO_ALLOC_COHERENT)) {
|
||||
return flags & BO_ALLOC_LMEM ? IRIS_HEAP_DEVICE_LOCAL :
|
||||
IRIS_HEAP_DEVICE_LOCAL_PREFERRED;
|
||||
if (bufmgr->vram.size > 0) {
|
||||
if ((flags & BO_ALLOC_SMEM) || (flags & BO_ALLOC_COHERENT))
|
||||
return IRIS_HEAP_SYSTEM_MEMORY;
|
||||
if ((flags & BO_ALLOC_LMEM) ||
|
||||
((flags & BO_ALLOC_SCANOUT) && !(flags & BO_ALLOC_SHARED)))
|
||||
return IRIS_HEAP_DEVICE_LOCAL;
|
||||
return IRIS_HEAP_DEVICE_LOCAL_PREFERRED;
|
||||
} else {
|
||||
assert(!(flags & BO_ALLOC_LMEM));
|
||||
return IRIS_HEAP_SYSTEM_MEMORY;
|
||||
|
|
@ -1016,8 +1018,7 @@ alloc_fresh_bo(struct iris_bufmgr *bufmgr, uint64_t bo_size, unsigned flags)
|
|||
case IRIS_HEAP_DEVICE_LOCAL_PREFERRED:
|
||||
/* For vram allocations, still use system memory as a fallback. */
|
||||
regions[num_regions++] = bufmgr->vram.region;
|
||||
if (!(flags & BO_ALLOC_SCANOUT))
|
||||
regions[num_regions++] = bufmgr->sys.region;
|
||||
regions[num_regions++] = bufmgr->sys.region;
|
||||
break;
|
||||
case IRIS_HEAP_DEVICE_LOCAL:
|
||||
regions[num_regions++] = bufmgr->vram.region;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue