From 4d26b38caf962367b16487bfe6c180a15bba7990 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 16 Jun 2023 19:58:28 +0200 Subject: [PATCH] rusticl/program: pass our max param size along to the spirv validator Fixes "api min_max_parameter_size" in spir-v mode Signed-off-by: Karol Herbst Reviewed-by: Jesse Natalie Part-of: --- src/gallium/frontends/rusticl/core/program.rs | 8 +++++++- src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/rusticl/core/program.rs b/src/gallium/frontends/rusticl/core/program.rs index 50c1eb8..214fa30 100644 --- a/src/gallium/frontends/rusticl/core/program.rs +++ b/src/gallium/frontends/rusticl/core/program.rs @@ -554,7 +554,13 @@ impl Program { let mut d = info.dev_build_mut(dev); let (spirv, log) = match &self.src { - ProgramSourceType::Il(spirv) => spirv.clone_on_validate(), + ProgramSourceType::Il(spirv) => { + let options = clc_validator_options { + // has to match CL_DEVICE_MAX_PARAMETER_SIZE + limit_max_function_arg: dev.param_max_size() as u32, + }; + spirv.clone_on_validate(&options) + } ProgramSourceType::Src(src) => { let args = prepare_options(&options, dev); spirv::SPIRVBin::from_clc( diff --git a/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs b/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs index 8caa8b7..641ecc8 100644 --- a/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs +++ b/src/gallium/frontends/rusticl/mesa/compiler/clc/spirv.rs @@ -203,10 +203,10 @@ impl SPIRVBin { (res, msgs.join("\n")) } - pub fn clone_on_validate(&self) -> (Option, String) { + pub fn clone_on_validate(&self, options: &clc_validator_options) -> (Option, String) { let mut msgs: Vec = Vec::new(); let logger = create_clc_logger(&mut msgs); - let res = unsafe { clc_validate_spirv(&self.spirv, &logger, ptr::null()) }; + let res = unsafe { clc_validate_spirv(&self.spirv, &logger, options) }; (res.then(|| self.clone()), msgs.join("\n")) } -- 2.7.4