From 57a7e86aa9779b0f2535c6958d5ed834fd4b84ee Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 5 Mar 2025 02:00:17 +0100 Subject: [PATCH] rusticl/program: rework build_nirs so it only touches devices we care about Cc: mesa-stable Part-of: --- src/gallium/frontends/rusticl/core/program.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/program.rs b/src/gallium/frontends/rusticl/core/program.rs index 219a4c88226..a8dd31f1c07 100644 --- a/src/gallium/frontends/rusticl/core/program.rs +++ b/src/gallium/frontends/rusticl/core/program.rs @@ -106,7 +106,7 @@ impl ProgramBuild { self.dev_build(dev).spirv.as_ref().unwrap().args(kernel) } - fn build_nirs(&mut self, is_src: bool) { + fn build_nirs(&mut self, devs: &[&'static Device], is_src: bool) { for kernel_name in &self.kernels.clone() { let kernel_args: HashSet<_> = self .devs_with_build() @@ -118,7 +118,7 @@ impl ProgramBuild { let mut kernel_info_set = HashSet::new(); // TODO: we could run this in parallel? - for dev in self.devs_with_build() { + for dev in devs { let build_result = convert_spirv_to_nir(self, kernel_name, &args, dev); kernel_info_set.insert(build_result.kernel_info); @@ -426,7 +426,7 @@ impl Program { kernels: kernels.into_iter().collect(), kernel_info: HashMap::new(), }; - build.build_nirs(false); + build.build_nirs(&devs, false); Ok(Arc::new(Self { base: CLObjectBase::new(RusticlTypes::Program), @@ -552,7 +552,7 @@ impl Program { .any(|b| b.kernels.values().any(|b| Arc::strong_count(b) > 1)) } - pub fn build(&self, devs: &[&Device], options: &str) -> bool { + pub fn build(&self, devs: &[&'static Device], options: &str) -> bool { let lib = options.contains("-create-library"); let mut info = self.build_info(); @@ -588,7 +588,7 @@ impl Program { d.status = CL_BUILD_SUCCESS as cl_build_status; let mut kernels = spirv.kernels(); info.kernels.append(&mut kernels); - info.build_nirs(self.is_src()); + info.build_nirs(devs, self.is_src()); } else { d.status = CL_BUILD_ERROR; d.bin_type = CL_PROGRAM_BINARY_TYPE_NONE; @@ -742,7 +742,7 @@ impl Program { }; // Pre build nir kernels - build.build_nirs(false); + build.build_nirs(devs, false); Arc::new(Self { base: CLObjectBase::new(RusticlTypes::Program),