[igt-dev] [PATCH i-g-t 1/2] lib/intel_bufops: Add intel_buf_init_in_region
apoorva1.singh at intel.com
apoorva1.singh at intel.com
Wed Sep 1 15:48:45 UTC 2021
From: Apoorva Singh <apoorva1.singh at intel.com>
Add intel_buf_init_in_region which allows memory region
to be specified for new BO being created.
Same as intel_buf_init with the additional region argument.
Signed-off-by: Apoorva Singh <apoorva1.singh at intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
Cc: Melkaveri, Arjun <arjun.melkaveri at intel.com>
---
lib/intel_bufops.c | 28 +++++++++++++++++++++++-----
lib/intel_bufops.h | 5 +++++
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
index faca4406..f5f67edd 100644
--- a/lib/intel_bufops.c
+++ b/lib/intel_bufops.c
@@ -730,7 +730,8 @@ static void __intel_buf_init(struct buf_ops *bops,
struct intel_buf *buf,
int width, int height, int bpp, int alignment,
uint32_t req_tiling, uint32_t compression,
- uint64_t bo_size, int bo_stride)
+ uint64_t bo_size, int bo_stride,
+ uint32_t region)
{
uint32_t tiling = req_tiling;
uint64_t size;
@@ -818,7 +819,7 @@ static void __intel_buf_init(struct buf_ops *bops,
if (handle)
buf->handle = handle;
else
- buf->handle = gem_create(bops->fd, size);
+ buf->handle = gem_create_in_memory_regions(bops->fd, size, region);
set_hw_tiled(bops, buf);
}
@@ -845,7 +846,24 @@ 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, 0, 0);
+ tiling, compression, 0, 0, I915_SYSTEM_MEMORY);
+
+ intel_buf_set_ownership(buf, true);
+}
+
+/**
+ * intel_buf_init_in_region
+ *
+ * Same as intel_buf_init with the additional region argument
+ */
+void intel_buf_init_in_region(struct buf_ops *bops,
+ struct intel_buf *buf,
+ int width, int height, int bpp, int alignment,
+ uint32_t tiling, uint32_t compression,
+ uint32_t region)
+{
+ __intel_buf_init(bops, 0, buf, width, height, bpp, alignment,
+ tiling, compression, 0, 0, region);
intel_buf_set_ownership(buf, true);
}
@@ -904,7 +922,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, 0, 0);
+ req_tiling, compression, 0, 0, -1);
}
/**
@@ -990,7 +1008,7 @@ struct intel_buf *intel_buf_create_using_handle_and_size(struct buf_ops *bops,
igt_assert(buf);
__intel_buf_init(bops, handle, buf, width, height, bpp, alignment,
- req_tiling, compression, size, stride);
+ req_tiling, compression, size, stride, -1);
return buf;
}
diff --git a/lib/intel_bufops.h b/lib/intel_bufops.h
index 9e57d53e..54f2ce45 100644
--- a/lib/intel_bufops.h
+++ b/lib/intel_bufops.h
@@ -125,6 +125,11 @@ static inline void intel_buf_set_ownership(struct intel_buf *buf, bool is_owner)
void intel_buf_init(struct buf_ops *bops, struct intel_buf *buf,
int width, int height, int bpp, int alignment,
uint32_t tiling, uint32_t compression);
+void intel_buf_init_in_region(struct buf_ops *bops,
+ struct intel_buf *buf,
+ int width, int height, int bpp, int alignment,
+ uint32_t tiling, uint32_t compression,
+ uint32_t region);
void intel_buf_close(struct buf_ops *bops, struct intel_buf *buf);
void intel_buf_init_using_handle(struct buf_ops *bops,
--
2.25.1
More information about the igt-dev
mailing list