[igt-dev] [PATCH i-g-t v6 14/15] lib/igt_draw: Pass region while building intel_buf from flink
Modem, Bhanuprakash
bhanuprakash.modem at intel.com
Thu Apr 27 06:41:16 UTC 2023
On Tue-25-04-2023 09:10 pm, Zbigniew Kempczyński wrote:
> For i915 region doesn't matter but for xe we need to be more strict and
> region aware. This is related to size and alignment constraints. As we
> don't have information about flink buffer origin let's assume region
> is vram if possible, otherwise choose system region.
>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
LGTM
Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> ---
> lib/igt_draw.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/lib/igt_draw.c b/lib/igt_draw.c
> index ac512fac5a..c5f2fdfe2b 100644
> --- a/lib/igt_draw.c
> +++ b/lib/igt_draw.c
> @@ -37,6 +37,7 @@
> #include "i915/gem_create.h"
> #include "i915/gem_mman.h"
> #include "i915/intel_mocs.h"
> +#include "xe/xe_query.h"
>
> #ifndef PAGE_ALIGN
> #ifndef PAGE_SIZE
> @@ -634,17 +635,24 @@ static struct intel_buf *create_buf(int fd, struct buf_ops *bops,
> struct buf_data *from, uint32_t tiling)
> {
> struct intel_buf *buf;
> + enum intel_driver driver = buf_ops_get_driver(bops);
> uint32_t handle, name, width, height;
> + uint64_t region = driver == INTEL_DRIVER_XE ? vram_if_possible(fd, 0) : -1;
> + uint64_t size = from->size;
>
> width = from->stride / (from->bpp / 8);
> height = from->size / from->stride;
> + if (driver == INTEL_DRIVER_XE)
> + size = ALIGN(size, xe_get_default_alignment(fd));
>
> name = gem_flink(fd, from->handle);
> handle = gem_open(fd, name);
>
> - buf = intel_buf_create_using_handle(bops, handle,
> - width, height, from->bpp, 0,
> - tiling, 0);
> + buf = intel_buf_create_full(bops, handle,
> + width, height, from->bpp, 0,
> + tiling, 0,
> + size, 0,
> + region);
>
> /* Make sure we close handle on destroy path */
> intel_buf_set_ownership(buf, true);
More information about the igt-dev
mailing list