[PATCH i-g-t] Revert "lib/intel_compute: Allow the user to override input and output addresses"

Francois Dugast francois.dugast at intel.com
Fri Feb 28 13:29:53 UTC 2025


This causes build issues on mips and armhf:
https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/jobs/72030908

Besides, there are hidden dependencies to SVM so this patch will
be reworked.

This reverts commit b747eebcc6f4b6729ae171490e52725e9fb13b89.

Signed-off-by: Francois Dugast <francois.dugast at intel.com>
---
 lib/intel_compute.c | 124 +++++++++++++-------------------------------
 lib/intel_compute.h |   4 --
 2 files changed, 37 insertions(+), 91 deletions(-)

diff --git a/lib/intel_compute.c b/lib/intel_compute.c
index a789755b7..4818c0ff7 100644
--- a/lib/intel_compute.c
+++ b/lib/intel_compute.c
@@ -708,8 +708,6 @@ static void compute_exec(int fd, const unsigned char *kernel,
 	};
 	struct bo_execenv execenv;
 	float *input_data, *output_data;
-	uint64_t bind_input_addr = (user && user->input_addr) ? user->input_addr : ADDR_INPUT;
-	uint64_t bind_output_addr = (user && user->output_addr) ? user->output_addr : ADDR_OUTPUT;
 	uint16_t devid = intel_get_drm_devid(fd);
 
 	bo_execenv_create(fd, &execenv, eci, user);
@@ -721,24 +719,16 @@ static void compute_exec(int fd, const unsigned char *kernel,
 
 	memcpy(bo_dict[0].data, kernel, size);
 	create_dynamic_state(bo_dict[1].data, OFFSET_KERNEL);
-	create_surface_state(bo_dict[2].data, bind_input_addr, bind_output_addr);
-	create_indirect_data(bo_dict[3].data, bind_input_addr, bind_output_addr,
+	create_surface_state(bo_dict[2].data, ADDR_INPUT, ADDR_OUTPUT);
+	create_indirect_data(bo_dict[3].data, ADDR_INPUT, ADDR_OUTPUT,
 			     IS_DG1(devid) ? 0x200 : 0x40, SIZE_DATA);
 
-	if (user && user->input_addr) {
-		input_data = (float *) user->input_addr;
-	} else {
-		input_data = (float *) bo_dict[4].data;
-		srand(time(NULL));
-
-		for (int i = 0; i < SIZE_DATA; i++)
-			input_data[i] = rand() / (float)RAND_MAX;
-	}
+	input_data = (float *) bo_dict[4].data;
+	output_data = (float *) bo_dict[5].data;
+	srand(time(NULL));
 
-	if (user && user->output_addr)
-		output_data = (float *) user->output_addr;
-	else
-		output_data = (float *) bo_dict[5].data;
+	for (int i = 0; i < SIZE_DATA; i++)
+		input_data[i] = rand() / (float)RAND_MAX;
 
 	if (IS_DG1(devid))
 		dg1_compute_exec_compute(bo_dict[6].data,
@@ -1005,8 +995,6 @@ static void xehp_compute_exec(int fd, const unsigned char *kernel,
 	};
 	struct bo_execenv execenv;
 	float *input_data, *output_data;
-	uint64_t bind_input_addr = (user && user->input_addr) ? user->input_addr : ADDR_INPUT;
-	uint64_t bind_output_addr = (user && user->output_addr) ? user->output_addr : ADDR_OUTPUT;
 
 	bo_execenv_create(fd, &execenv, eci, user);
 
@@ -1017,24 +1005,16 @@ static void xehp_compute_exec(int fd, const unsigned char *kernel,
 
 	memcpy(bo_dict[0].data, kernel, size);
 	create_dynamic_state(bo_dict[1].data, OFFSET_KERNEL);
-	xehp_create_surface_state(bo_dict[2].data, bind_input_addr, bind_output_addr);
-	xehp_create_indirect_data(bo_dict[3].data, bind_input_addr, bind_output_addr, SIZE_DATA);
-	xehp_create_surface_state(bo_dict[7].data, bind_input_addr, bind_output_addr);
-
-	if (user && user->input_addr) {
-		input_data = (float *) user->input_addr;
-	} else {
-		input_data = (float *) bo_dict[4].data;
-		srand(time(NULL));
+	xehp_create_surface_state(bo_dict[2].data, ADDR_INPUT, ADDR_OUTPUT);
+	xehp_create_indirect_data(bo_dict[3].data, ADDR_INPUT, ADDR_OUTPUT, SIZE_DATA);
+	xehp_create_surface_state(bo_dict[7].data, ADDR_INPUT, ADDR_OUTPUT);
 
-		for (int i = 0; i < SIZE_DATA; i++)
-			input_data[i] = rand() / (float)RAND_MAX;
-	}
+	input_data = (float *) bo_dict[4].data;
+	output_data = (float *) bo_dict[5].data;
+	srand(time(NULL));
 
-	if (user && user->output_addr)
-		output_data = (float *) user->output_addr;
-	else
-		output_data = (float *) bo_dict[5].data;
+	for (int i = 0; i < SIZE_DATA; i++)
+		input_data[i] = rand() / (float)RAND_MAX;
 
 	xehp_compute_exec_compute(bo_dict[8].data,
 				  ADDR_GENERAL_STATE_BASE,
@@ -1229,8 +1209,6 @@ static void xehpc_compute_exec(int fd, const unsigned char *kernel,
 	};
 	struct bo_execenv execenv;
 	float *input_data, *output_data;
-	uint64_t bind_input_addr = (user && user->input_addr) ? user->input_addr : ADDR_INPUT;
-	uint64_t bind_output_addr = (user && user->output_addr) ? user->output_addr : ADDR_OUTPUT;
 
 	bo_execenv_create(fd, &execenv, eci, user);
 
@@ -1240,22 +1218,14 @@ static void xehpc_compute_exec(int fd, const unsigned char *kernel,
 	bo_execenv_bind(&execenv, bo_dict, XEHPC_BO_DICT_ENTRIES);
 
 	memcpy(bo_dict[0].data, kernel, size);
-	xehpc_create_indirect_data(bo_dict[1].data, bind_input_addr, bind_output_addr, SIZE_DATA);
+	xehpc_create_indirect_data(bo_dict[1].data, ADDR_INPUT, ADDR_OUTPUT, SIZE_DATA);
 
-	if (user && user->input_addr) {
-		input_data = (float *) user->input_addr;
-	} else {
-		input_data = (float *) bo_dict[2].data;
-		srand(time(NULL));
-
-		for (int i = 0; i < SIZE_DATA; i++)
-			input_data[i] = rand() / (float)RAND_MAX;
-	}
+	input_data = (float *) bo_dict[2].data;
+	output_data = (float *) bo_dict[3].data;
+	srand(time(NULL));
 
-	if (user && user->output_addr)
-		output_data = (float *) user->output_addr;
-	else
-		output_data = (float *) bo_dict[3].data;
+	for (int i = 0; i < SIZE_DATA; i++)
+		input_data[i] = rand() / (float)RAND_MAX;
 
 	xehpc_compute_exec_compute(bo_dict[5].data,
 				   ADDR_GENERAL_STATE_BASE,
@@ -1602,8 +1572,6 @@ static void xelpg_compute_exec(int fd, const unsigned char *kernel,
 
 	struct bo_execenv execenv;
 	float *input_data, *output_data;
-	uint64_t bind_input_addr = (user && user->input_addr) ? user->input_addr : ADDR_INPUT;
-	uint64_t bind_output_addr = (user && user->output_addr) ? user->output_addr : ADDR_OUTPUT;
 
 	bo_execenv_create(fd, &execenv, eci, user);
 
@@ -1615,24 +1583,16 @@ static void xelpg_compute_exec(int fd, const unsigned char *kernel,
 	memcpy(bo_dict[0].data, kernel, size);
 
 	create_dynamic_state(bo_dict[1].data, OFFSET_KERNEL);
-	xehp_create_surface_state(bo_dict[2].data, bind_input_addr, bind_output_addr);
-	xehp_create_indirect_data(bo_dict[3].data, bind_input_addr, bind_output_addr, SIZE_DATA);
-	xehp_create_surface_state(bo_dict[7].data, bind_input_addr, bind_output_addr);
-
-	if (user && user->input_addr) {
-		input_data = (float *) user->input_addr;
-	} else {
-		input_data = (float *) bo_dict[4].data;
-		srand(time(NULL));
+	xehp_create_surface_state(bo_dict[2].data, ADDR_INPUT, ADDR_OUTPUT);
+	xehp_create_indirect_data(bo_dict[3].data, ADDR_INPUT, ADDR_OUTPUT, SIZE_DATA);
+	xehp_create_surface_state(bo_dict[7].data, ADDR_INPUT, ADDR_OUTPUT);
 
-		for (int i = 0; i < SIZE_DATA; i++)
-			input_data[i] = rand() / (float)RAND_MAX;
-	}
+	input_data = (float *) bo_dict[4].data;
+	output_data = (float *) bo_dict[5].data;
+	srand(time(NULL));
 
-	if (user && user->output_addr)
-		output_data = (float *) user->output_addr;
-	else
-		output_data = (float *) bo_dict[5].data;
+	for (int i = 0; i < SIZE_DATA; i++)
+		input_data[i] = rand() / (float)RAND_MAX;
 
 	xelpg_compute_exec_compute(bo_dict[8].data,
 				   ADDR_GENERAL_STATE_BASE,
@@ -1705,8 +1665,6 @@ static void xe2lpg_compute_exec(int fd, const unsigned char *kernel,
 
 	struct bo_execenv execenv;
 	float *input_data, *output_data;
-	uint64_t bind_input_addr = (user && user->input_addr) ? user->input_addr : ADDR_INPUT;
-	uint64_t bind_output_addr = (user && user->output_addr) ? user->output_addr : ADDR_OUTPUT;
 
 	bo_execenv_create(fd, &execenv, eci, user);
 
@@ -1717,24 +1675,16 @@ static void xe2lpg_compute_exec(int fd, const unsigned char *kernel,
 
 	memcpy(bo_dict[0].data, kernel, size);
 	create_dynamic_state(bo_dict[1].data, OFFSET_KERNEL);
-	xehp_create_surface_state(bo_dict[2].data, bind_input_addr, bind_output_addr);
-	xehp_create_indirect_data(bo_dict[3].data, bind_input_addr, bind_output_addr, SIZE_DATA);
-	xehp_create_surface_state(bo_dict[7].data, bind_input_addr, bind_output_addr);
-
-	if (user && user->input_addr) {
-		input_data = (float *) user->input_addr;
-	} else {
-		input_data = (float *) bo_dict[4].data;
-		srand(time(NULL));
+	xehp_create_surface_state(bo_dict[2].data, ADDR_INPUT, ADDR_OUTPUT);
+	xehp_create_indirect_data(bo_dict[3].data, ADDR_INPUT, ADDR_OUTPUT, SIZE_DATA);
+	xehp_create_surface_state(bo_dict[7].data, ADDR_INPUT, ADDR_OUTPUT);
 
-		for (int i = 0; i < SIZE_DATA; i++)
-			input_data[i] = rand() / (float)RAND_MAX;
-	}
+	input_data = (float *) bo_dict[4].data;
+	output_data = (float *) bo_dict[5].data;
+	srand(time(NULL));
 
-	if (user && user->output_addr)
-		output_data = (float *) user->output_addr;
-	else
-		output_data = (float *) bo_dict[5].data;
+	for (int i = 0; i < SIZE_DATA; i++)
+		input_data[i] = rand() / (float)RAND_MAX;
 
 	xe2lpg_compute_exec_compute(bo_dict[8].data,
 				  ADDR_GENERAL_STATE_BASE,
diff --git a/lib/intel_compute.h b/lib/intel_compute.h
index 9abef3084..dc0fe2ec2 100644
--- a/lib/intel_compute.h
+++ b/lib/intel_compute.h
@@ -55,10 +55,6 @@ struct user_execenv {
 	unsigned int kernel_size;
 	/** @skip_results_check: do not verify correctness of the results if true */
 	bool skip_results_check;
-	/** @input_addr: override default address of the input array if provided */
-	uint64_t input_addr;
-	/** @output_addr: override default address of the output array if provided */
-	uint64_t output_addr;
 };
 
 extern const struct intel_compute_kernels intel_compute_square_kernels[];
-- 
2.43.0



More information about the igt-dev mailing list