[igt-dev] [PATCH i-g-t 5/7] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT
Karolina Stolarek
karolina.stolarek at intel.com
Tue Mar 7 14:59:57 UTC 2023
From: Vikas Srivastava <vikas.srivastava at intel.com>
Add wrapper API in intel_batchbuffer to call respective copy functions
for XY_FAST_COPY_BLT or XY_SRC_BLT based on platform on which its
supported.
Signed-off-by: Vikas Srivastava <vikas.srivastava at intel.com>
Signed-off-by: Karolina Stolarek <karolina.stolarek at intel.com>
---
lib/intel_batchbuffer.c | 72 +++++++++++++++++++++++++++++++++++++++++
lib/intel_batchbuffer.h | 22 +++++++++++++
2 files changed, 94 insertions(+)
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 4ea1256e..960231e3 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -277,6 +277,78 @@ static uint32_t src_copy_dword1(uint32_t dst_pitch, uint32_t bpp)
return dword1;
}
+/**
+ * igt_blitter_copy:
+ * @fd: file descriptor of the i915 driver
+ * @ahnd: handle to an allocator
+ * @ctx: context within which execute copy blit
+ * @src_handle: GEM handle of the source buffer
+ * @src_delta: offset into the source GEM bo, in bytes
+ * @src_stride: Stride (in bytes) of the source buffer
+ * @src_tiling: Tiling mode of the source buffer
+ * @src_x: X coordinate of the source region to copy
+ * @src_y: Y coordinate of the source region to copy
+ * @src_size: size of the src bo required for allocator and softpin
+ * @width: Width of the region to copy
+ * @height: Height of the region to copy
+ * @bpp: source and destination bits per pixel
+ * @dst_handle: GEM handle of the destination buffer
+ * @dst_delta: offset into the destination GEM bo, in bytes
+ * @dst_stride: Stride (in bytes) of the destination buffer
+ * @dst_tiling: Tiling mode of the destination buffer
+ * @dst_x: X coordinate of destination
+ * @dst_y: Y coordinate of destination
+ * @dst_size: size of the dst bo required for allocator and softpin
+ *
+ * Wrapper API to call appropriate blitter copy function.
+ */
+
+void igt_blitter_copy(int fd,
+ uint64_t ahnd,
+ uint32_t ctx,
+ const intel_ctx_cfg_t *cfg,
+ /* src */
+ uint32_t src_handle,
+ uint32_t src_delta,
+ uint32_t src_stride,
+ uint32_t src_tiling,
+ uint32_t src_x, uint32_t src_y,
+ uint64_t src_size,
+ /* size */
+ uint32_t width, uint32_t height,
+ /* bpp */
+ uint32_t bpp,
+ /* dst */
+ uint32_t dst_handle,
+ uint32_t dst_delta,
+ uint32_t dst_stride,
+ uint32_t dst_tiling,
+ uint32_t dst_x, uint32_t dst_y,
+ uint64_t dst_size)
+{
+ uint32_t devid;
+
+ devid = intel_get_drm_devid(fd);
+
+ if (intel_graphics_ver(devid) >= IP_VER(12, 60))
+ igt_blitter_fast_copy__raw(fd, ahnd, ctx, NULL,
+ src_handle, src_delta,
+ src_stride, src_tiling,
+ src_x, src_y, src_size,
+ width, height, bpp,
+ dst_handle, dst_delta,
+ dst_stride, dst_tiling,
+ dst_x, dst_y, dst_size);
+ else
+ igt_blitter_src_copy(fd, ahnd, ctx, NULL,
+ src_handle, src_delta,
+ src_stride, src_tiling,
+ src_x, src_y, src_size,
+ width, height, bpp,
+ dst_handle, dst_delta,
+ dst_stride, dst_tiling,
+ dst_x, dst_y, dst_size);
+}
/**
* igt_blitter_src_copy:
* @fd: file descriptor of the i915 driver
diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
index 81830d77..aed1d575 100644
--- a/lib/intel_batchbuffer.h
+++ b/lib/intel_batchbuffer.h
@@ -36,6 +36,28 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
uint32_t fast_copy_dword1(unsigned int src_tiling,
unsigned int dst_tiling,
int bpp);
+void igt_blitter_copy(int fd,
+ uint64_t ahnd,
+ uint32_t ctx,
+ const intel_ctx_cfg_t *cfg,
+ /* src */
+ uint32_t src_handle,
+ uint32_t src_delta,
+ uint32_t src_stride,
+ uint32_t src_tiling,
+ uint32_t src_x, uint32_t src_y,
+ uint64_t src_size,
+ /* size */
+ uint32_t width, uint32_t height,
+ /* bpp */
+ uint32_t bpp,
+ /* dst */
+ uint32_t dst_handle,
+ uint32_t dst_delta,
+ uint32_t dst_stride,
+ uint32_t dst_tiling,
+ uint32_t dst_x, uint32_t dst_y,
+ uint64_t dst_size);
void igt_blitter_src_copy(int fd,
uint64_t ahnd,
--
2.25.1
More information about the igt-dev
mailing list