Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Subject: [igt-dev] [PATCH i-g-t v10 10/31] lib/intel_bufops: Add init with handle and size function
Date: Fri, 20 Nov 2020 12:31:10 +0100	[thread overview]
Message-ID: <20201120113131.67971-11-zbigniew.kempczynski@intel.com> (raw)
In-Reply-To: <20201120113131.67971-1-zbigniew.kempczynski@intel.com>

For some cases (fb with compression) fb size is bigger than calculated
intel_buf what lead to execbuf failure when allocator is used
along with EXEC_OBJECT_PINNED flag set for all objects.

We need to create intel_buf with size equal to fb so new function
in which we pass handle and size is required.

Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Dominik Grzegorzek <dominik.grzegorzek@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/intel_bufops.c | 33 ++++++++++++++++++++++++++++-----
 lib/intel_bufops.h |  7 +++++++
 2 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
index 60a818cf..c0d2ea4f 100644
--- a/lib/intel_bufops.c
+++ b/lib/intel_bufops.c
@@ -706,7 +706,8 @@ static void __intel_buf_init(struct buf_ops *bops,
 			     uint32_t handle,
 			     struct intel_buf *buf,
 			     int width, int height, int bpp, int alignment,
-			     uint32_t req_tiling, uint32_t compression)
+			     uint32_t req_tiling, uint32_t compression,
+			     uint64_t bo_size)
 {
 	uint32_t tiling = req_tiling;
 	uint64_t size;
@@ -756,7 +757,7 @@ static void __intel_buf_init(struct buf_ops *bops,
 		buf->ccs[0].offset = buf->surface[0].stride * ALIGN(height, 32);
 		buf->ccs[0].stride = aux_width;
 
-		size = buf->ccs[0].offset + aux_width * aux_height;
+		size = max(bo_size, buf->ccs[0].offset + aux_width * aux_height);
 	} else {
 		if (tiling) {
 			devid =  intel_get_drm_devid(bops->fd);
@@ -771,7 +772,7 @@ static void __intel_buf_init(struct buf_ops *bops,
 		buf->tiling = tiling;
 		buf->bpp = bpp;
 
-		size = buf->surface[0].stride * ALIGN(height, align_h);
+		size = max(bo_size, buf->surface[0].stride * ALIGN(height, align_h));
 	}
 
 	/* Store real bo size to avoid mistakes in calculating it again */
@@ -807,7 +808,7 @@ void intel_buf_init(struct buf_ops *bops,
 		    uint32_t tiling, uint32_t compression)
 {
 	__intel_buf_init(bops, 0, buf, width, height, bpp, alignment,
-			 tiling, compression);
+			 tiling, compression, 0);
 
 	intel_buf_set_ownership(buf, true);
 }
@@ -858,7 +859,7 @@ void intel_buf_init_using_handle(struct buf_ops *bops,
 				 uint32_t req_tiling, uint32_t compression)
 {
 	__intel_buf_init(bops, handle, buf, width, height, bpp, alignment,
-			 req_tiling, compression);
+			 req_tiling, compression, 0);
 }
 
 /**
@@ -927,6 +928,28 @@ struct intel_buf *intel_buf_create_using_handle(struct buf_ops *bops,
 	return buf;
 }
 
+struct intel_buf *intel_buf_create_using_handle_and_size(struct buf_ops *bops,
+							 uint32_t handle,
+							 int width, int height,
+							 int bpp, int alignment,
+							 uint32_t req_tiling,
+							 uint32_t compression,
+							 uint64_t size)
+{
+	struct intel_buf *buf;
+
+	igt_assert(bops);
+
+	buf = calloc(1, sizeof(*buf));
+	igt_assert(buf);
+
+	__intel_buf_init(bops, handle, buf, width, height, bpp, alignment,
+			 req_tiling, compression, size);
+
+	return buf;
+}
+
+
 /**
  * intel_buf_destroy
  * @buf: intel_buf
diff --git a/lib/intel_bufops.h b/lib/intel_bufops.h
index 5619fc6f..54480bff 100644
--- a/lib/intel_bufops.h
+++ b/lib/intel_bufops.h
@@ -139,6 +139,13 @@ struct intel_buf *intel_buf_create_using_handle(struct buf_ops *bops,
 						uint32_t req_tiling,
 						uint32_t compression);
 
+struct intel_buf *intel_buf_create_using_handle_and_size(struct buf_ops *bops,
+							 uint32_t handle,
+							 int width, int height,
+							 int bpp, int alignment,
+							 uint32_t req_tiling,
+							 uint32_t compression,
+							 uint64_t size);
 void intel_buf_destroy(struct intel_buf *buf);
 
 void *intel_buf_cpu_map(struct intel_buf *buf, bool write);
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2020-11-20 11:31 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-20 11:31 [igt-dev] [PATCH i-g-t v10 00/31] Introduce IGT allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 01/31] lib/igt_list: igt_hlist implementation Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 02/31] lib/igt_map: Introduce igt_map Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 03/31] lib/igt_core: Track child process pid and tid Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 04/31] lib/intel_allocator_simple: Add simple allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 05/31] lib/intel_allocator_random: Add random allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 06/31] lib/intel_allocator: Add intel_allocator core Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 07/31] lib/intel_allocator: Try to stop smoothly instead of deinit Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 08/31] lib/intel_allocator_msgchannel: Scale to 4k of parallel clients Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 09/31] lib/intel_bufops: Removes handle from allocator, change size Zbigniew Kempczyński
2020-11-20 11:31 ` Zbigniew Kempczyński [this message]
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 11/31] lib/intel_batchbuffer: Integrate intel_bb with allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 12/31] lib/intel_batchbuffer: Add tracking intel_buf to intel_bb Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 13/31] lib/intel_aux_pgtable: Get addresses for aux table from an allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 14/31] lib/igt_fb: Initialize intel_buf with same size as fb Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 15/31] tests/api_intel_bb: Modify test to verify intel_bb with allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 16/31] tests/api_intel_bb: Add compressed->compressed copy Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 17/31] tests/api_intel_allocator: Simple allocator test suite Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 18/31] tests/gem|kms: Remove intel_bb from fixture Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 19/31] tests/gem_mmap_offset: Use intel_buf wrapper code instead direct Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 20/31] tests/gem_ppgtt: Adopt test to use intel_bb with allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 21/31] tests/gem_render_copy_redux: Adopt to use with intel_bb and allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 22/31] tests/perf.c: Remove buffer from batch Zbigniew Kempczyński
2020-11-20 12:06   ` Lionel Landwerlin
2020-11-20 12:17     ` Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 23/31] tests/gem_linear_blits: Use intel allocator Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 24/31] lib/ioctl_wrappers: Add gem_has_relocations() check Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 25/31] lib/intel_batchbuffer: Use relocations in intel-bb up to gen12 Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 26/31] tests/api_intel_*: Adopt to use relocations as default " Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 27/31] tests/gem_ppgtt: Migrate memory check out of render blits Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 28/31] tests/api_intel_bb: Remove check-canonical test Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 29/31] tests/api_intel_bb: Use allocator in delta-check test Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 30/31] lib/intel_allocator: Separate allocator multiprocess start Zbigniew Kempczyński
2020-11-20 11:31 ` [igt-dev] [PATCH i-g-t v10 31/31] tests/api_intel_allocator: Prepare to run with sanitizer Zbigniew Kempczyński
2020-11-20 13:28 ` [igt-dev] ✗ Fi.CI.BAT: failure for Introduce IGT allocator (rev11) Patchwork
2020-11-20 17:34   ` Zbigniew Kempczyński

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=20201120113131.67971-11-zbigniew.kempczynski@intel.com \
    --to=zbigniew.kempczynski@intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=igt-dev@lists.freedesktop.org \
    /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