Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
Cc: igt-dev@lists.freedesktop.org, Petri Latvala <petri.latvala@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t 2/2] lib/intel_bufops: Store gem bo size
Date: Mon, 04 Oct 2021 16:20:24 -0700	[thread overview]
Message-ID: <87bl44z8av.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20211004054056.24346-3-zbigniew.kempczynski@intel.com>

On Sun, 03 Oct 2021 22:40:56 -0700, Zbigniew Kempczyński wrote:
>
> intel_buf is keeping its size which may differ to underlying gem bo size.
> Introduce keeping bo_size field which is used along with softpin mode
> - like in intel_bb.
>
> Patch also should remove previous discrepancy where intel_buf_bo_size()
> returned requested (not gem bo size).
>
> From now on user has an access to:
> 1. raw buffer size - intel_buf_size() - function returns how buffer data
>    really takes in the memory

Not sure what we mean by this since intel_buf_size() can return 0 even with
a non-zero handle. See below.

> 2. gem bo buffer size - intel_buf_bo_size() - function returns how big
>    underlying gem object is

> diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
> index 7199723bb..80c5bb80b 100644
> --- a/lib/intel_bufops.c
> +++ b/lib/intel_bufops.c
> @@ -813,17 +813,16 @@ static void __intel_buf_init(struct buf_ops *bops,
>		size = bo_size;
>	}
>
> -	/* Store real bo size to avoid mistakes in calculating it again */
> +	/* Store buffer size to avoid mistakes in calculating it again */
>	buf->size = size;
> +	buf->handle = handle;
>
> -	if (handle)
> -		buf->handle = handle;
> -	else {
> -		if (!__gem_create_in_memory_regions(bops->fd, &handle, &size, region))
> -			buf->handle = handle;
> -		else
> -			buf->handle = gem_create(bops->fd, size);
> -	}
> +	if (!handle)
> +		if (__gem_create_in_memory_regions(bops->fd, &buf->handle, &size, region))
> +			igt_assert_eq(__gem_create(bops->fd, &size, &buf->handle), 0);
> +
> +	/* Store gem bo size */
> +	buf->bo_size = size;

The code after the above changes is like this:

        if (bo_size > 0) {
                igt_assert(bo_size >= size);
                size = bo_size;
        }

        /* Store buffer size to avoid mistakes in calculating it again */
        buf->size = size;
        buf->handle = handle;

        if (!handle)
                if (__gem_create_in_memory_regions(bops->fd, &buf->handle, &size, region))
                        igt_assert_eq(__gem_create(bops->fd, &size, &buf->handle), 0);

        /* Store gem bo size */
        buf->bo_size = size;

The function is called with:

a. handle == 0 or != 0
b. bo_size == 0 or != 0

As seen in __intel_buf_init callers:

*** lib/intel_bufops.c:
__intel_buf_init[728]          static void __intel_buf_init(struct buf_ops *bops,
intel_buf_init[851]            __intel_buf_init(bops, 0, buf, width, height, bpp, alignment,
intel_buf_init_in_region[868]  __intel_buf_init(bops, 0, buf, width, height, bpp, alignment,
intel_buf_init_using_handle[927] __intel_buf_init(bops, handle, buf, width, height, bpp, alignment,
intel_buf_create_using_handle_and_size[1013] __intel_buf_init(bops, handle, buf, width, height, bpp, alignment,

So when handle != 0 and bo_size == 0, we end with both buf->size == buf->bo_size == 0.
When handle == 0 and bo_size == 0, we end up with buf->size == 0 and buf->bo_size != 0.

So this is not a new issue, maybe it's ok, but I just wanted to check with
you if you think all these scenarios work out ok even after introducing
separate buf->size and buf->bo_size. Thanks.

  reply	other threads:[~2021-10-04 23:35 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-04  5:40 [igt-dev] [PATCH i-g-t 0/2] Clean buffer and bo size in intel_buf Zbigniew Kempczyński
2021-10-04  5:40 ` [igt-dev] [PATCH i-g-t 1/2] lib/intel_bufops: Rename intel_buf_bo_size() -> intel_buf_size() Zbigniew Kempczyński
2021-10-04 23:09   ` Dixit, Ashutosh
2021-10-04  5:40 ` [igt-dev] [PATCH i-g-t 2/2] lib/intel_bufops: Store gem bo size Zbigniew Kempczyński
2021-10-04 23:20   ` Dixit, Ashutosh [this message]
2021-10-05  6:52     ` Zbigniew Kempczyński
2021-10-05 17:51       ` Dixit, Ashutosh
2021-10-05 18:05         ` Zbigniew Kempczyński
2021-10-04 12:59 ` [igt-dev] ✓ Fi.CI.BAT: success for Clean buffer and bo size in intel_buf Patchwork
2021-10-04 15:45 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bl44z8av.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=petri.latvala@intel.com \
    --cc=zbigniew.kempczynski@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox