[igt-dev] [PATCH i-g-t] lib: Support all future platforms in bufops

Lucas De Marchi lucas.demarchi at intel.com
Thu Dec 8 20:02:26 UTC 2022


On Tue, Dec 06, 2022 at 06:02:17AM +0100, Zbigniew Kempczyński wrote:
>On Mon, Dec 05, 2022 at 03:03:48PM -0800, Lucas De Marchi wrote:
>> From: Chris Wilson <chris.p.wilson at intel.com>
>>
>> The basic assumption is that any future/unknown platform will derive its
>> feature set from the last known generation, so we can use their
>> definitions as our defaults.
>>
>> Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
>> Signed-off-by: Chris Wilson <chris.p.wilson at intel.com>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  lib/intel_bufops.c | 23 +++++++++++------------
>>  1 file changed, 11 insertions(+), 12 deletions(-)
>>
>> diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
>> index c63a5760..72c2189e 100644
>> --- a/lib/intel_bufops.c
>> +++ b/lib/intel_bufops.c
>> @@ -101,7 +101,7 @@ struct buf_ops {
>>  	int fd;
>>  	int gen_start;
>>  	int gen_end;
>> -	int intel_gen;
>> +	unsigned int intel_gen;
>>  	uint32_t supported_tiles;
>>  	uint32_t supported_hw_tiles;
>>  	uint32_t swizzle_x;
>> @@ -440,8 +440,8 @@ static void __copy_ccs(struct buf_ops *bops, struct intel_buf *buf,
>>  		       uint32_t *linear, enum ccs_copy_direction dir)
>>  {
>>  	uint64_t size, offset, ccs_size;
>> +	unsigned int gen;
>>  	void *map;
>> -	int gen;
>>
>>  	if (!buf->compression || HAS_FLATCCS(intel_get_drm_devid(bops->fd)))
>>  		return;
>> @@ -1214,7 +1214,7 @@ static void __intel_buf_write_to_png(struct buf_ops *bops,
>>  	cairo_status_t ret;
>>  	void *linear;
>>  	int format, width, height, stride, offset;
>> -	int gen = bops->intel_gen;
>> +	unsigned int gen = bops->intel_gen;
>>
>>  	igt_assert_eq(posix_memalign(&linear, 16, intel_buf_size(buf)), 0);
>>
>> @@ -1265,7 +1265,7 @@ void intel_buf_write_aux_to_png(struct intel_buf *buf, const char *filename)
>>  	.ys_to_linear       = copy_ys_to_linear, \
>>  	.tile4_to_linear    = copy_tile4_to_linear
>>
>> -struct buf_ops buf_ops_arr[] = {
>> +static const struct buf_ops buf_ops_arr[] = {
>>  	{
>>  		DEFAULT_BUFOPS(2, 8),
>>  		.supported_tiles    = TILE_NONE | TILE_X | TILE_Y,
>> @@ -1277,7 +1277,7 @@ struct buf_ops buf_ops_arr[] = {
>>  	},
>>
>>  	{
>> -		DEFAULT_BUFOPS(12, 12),
>> +		DEFAULT_BUFOPS(12, ~0U),
>>  		.supported_tiles   = TILE_NONE | TILE_X | TILE_Y | TILE_Yf | TILE_Ys | TILE_4,
>>  	},
>>  };
>> @@ -1394,28 +1394,27 @@ uint64_t intel_buf_bo_size(const struct intel_buf *buf)
>>  static struct buf_ops *__buf_ops_create(int fd, bool check_idempotency)
>>  {
>>  	struct buf_ops *bops = calloc(1, sizeof(*bops));
>> +	unsigned int generation;
>>  	uint32_t devid;
>> -	int generation;
>>
>>  	igt_assert(bops);
>>
>>  	devid = intel_get_drm_devid(fd);
>>  	generation = intel_gen(devid);
>>
>> -	/* Predefined settings */
>> +	/* Predefined settings: see intel_device_info? */
>
>+Karolina
>
>Above is likely partially true, for 4tile only. We're working how to provide
>valid information about format support. Bufops were written at the moment
>of dg1, so no flatccs and no differences in supported formats / compression
>were known to me yet (so for dg1 TILE_X is not true).
>
>Main problem we got now with graphics_ver >= 12 is that format support diverge
>across graphics_rel and there's no single place where you can get this info
>yet. Adding .has_FMT might me not reliable for auxiliary blitters/other
>engines (previously we thought to add simple .blitter_formats = TILE_X |
>..., but according to differences between blitter engines it would extend
>this structure a bit). Anyway rework in this area is already happening and
>you can expect some patches soon.
>
>But for this change:
>
>Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
>

applied, thanks

Lucas De Marchi


More information about the igt-dev mailing list