[igt-dev] [PATCH i-g-t 1/2] lib/intel_batchbuffer: Make find_engine() more flexible

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Thu Dec 1 07:18:41 UTC 2022


On Wed, Nov 30, 2022 at 08:07:59AM +0100, Karolina Stolarek wrote:
> find_engine() depends on intel_bb struct, making it hard to
> use outside of this context. As this function cares only about
> intel_ctx_cfg, not intel_bb itself, let's pass the context
> config in directly.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek at intel.com>
> ---
>  lib/intel_batchbuffer.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 19a1fbe4..00a263f2 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -1500,13 +1500,11 @@ static bool has_ctx_cfg(struct intel_bb *ibb)
>  	return ibb->cfg && ibb->cfg->num_engines > 0;
>  }
>  
> -static uint32_t find_engine(struct intel_bb *ibb, unsigned int class)
> +static uint32_t find_engine(const intel_ctx_cfg_t *cfg, unsigned int class)

Probably in the future this might be subject of extension with instance.
Currently this design is limiting us to single (first) blitter.

Easiest way would be put responsiblity of passing engine id to the caller,
but then we need to do more work in all igts. So for single case:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>

--
Zbigniew 

>  {
> -	intel_ctx_cfg_t *cfg;
>  	unsigned int i;
>  	uint32_t engine_id = -1;
>  
> -	cfg = ibb->cfg;
>  	for (i = 0; i < cfg->num_engines; i++) {
>  		if (cfg->engines[i].engine_class == class)
>  			engine_id = i;
> @@ -2833,7 +2831,7 @@ void intel_bb_flush_render(struct intel_bb *ibb)
>  		return;
>  
>  	if (has_ctx_cfg(ibb))
> -		ring = find_engine(ibb, I915_ENGINE_CLASS_RENDER);
> +		ring = find_engine(ibb->cfg, I915_ENGINE_CLASS_RENDER);
>  	else
>  		ring = I915_EXEC_RENDER;
>  
> @@ -2856,7 +2854,7 @@ void intel_bb_flush_blit(struct intel_bb *ibb)
>  		return;
>  
>  	if (has_ctx_cfg(ibb))
> -		ring = find_engine(ibb, I915_ENGINE_CLASS_COPY);
> +		ring = find_engine(ibb->cfg, I915_ENGINE_CLASS_COPY);
>  	else
>  		ring = HAS_BLT_RING(ibb->devid) ? I915_EXEC_BLT : I915_EXEC_DEFAULT;
>  
> -- 
> 2.25.1
> 


More information about the igt-dev mailing list