From 3bcb7a90c1b1404e51015bda9add4d2ba467c052 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Fri, 10 Sep 2021 16:49:24 +0100 Subject: ipa: ipu3: Clear incoming parameter use flags The incoming params buffer may contain uninitialised data, or the parameters of previously queued frames. Clearing the entire buffer may be an expensive operation, and the kernel will only read from structures which have their associated use-flag set. It is the responsibility of the algorithms to set the use flags accordingly for any data structure they update during prepare(). Clear the use flags of the parameter buffer before passing the buffer to the algorithms during their prepare() operations. Reviewed-by: Jean-Michel Hautbois Tested-by: Jean-Michel Hautbois Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- src/ipa/ipu3/ipu3.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/ipa') diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index c925cf64..30d2a539 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -457,6 +457,17 @@ void IPAIPU3::processControls([[maybe_unused]] unsigned int frame, void IPAIPU3::fillParams(unsigned int frame, ipu3_uapi_params *params) { + /* + * The incoming params buffer may contain uninitialised data, or the + * parameters of previously queued frames. Clearing the entire buffer + * may be an expensive operation, and the kernel will only read from + * structures which have their associated use-flag set. + * + * It is the responsibility of the algorithms to set the use flags + * accordingly for any data structure they update during prepare(). + */ + params->use = {}; + for (auto const &algo : algorithms_) algo->prepare(context_, params); -- cgit v1.2.1