Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Jahagirdar, Akshata" <akshata.jahagirdar@intel.com>
To: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
Cc: <igt-dev@lists.freedesktop.org>,
	Jonathan Cavitt <jonathan.cavitt@intel.com>
Subject: Re: [PATCH i-g-t v6 2/2] tests/xe_ccs: Update compression check based on flat-ccs enablement
Date: Thu, 18 Apr 2024 23:36:37 -0700	[thread overview]
Message-ID: <f32bd45b-e8c0-445c-bfa9-89ad216c4f0c@intel.com> (raw)
In-Reply-To: <20240418135949.ow7vnpidfjeclzcp@zkempczy-mobl2>


On 4/18/2024 6:59 AM, Zbigniew Kempczyński wrote:
> On Thu, Apr 18, 2024 at 01:46:43AM -0700, Akshata Jahagirdar wrote:
>> In Xe2+ platforms,we need to run this test regardless of the status of flat-ccs.
>> Check if the platform supports compression and has flat ccs enabled, and if it
>> doesn't, then update the checks accordingly and proceed with the test.
>>
>> Additionally, On Xe2 dGPU, compression is only supported with VRAM. When copying
>> from VRAM -> sysmem the KMD uses mapping with uncompressed PAT so the copy
>> in system memory is guaranteed to be uncompressed. When restoring such buffers
>> from sysmem -> VRAM the KMD can't easily know which pages were originally
>> compressed, so we always use uncompressed -> uncompressed here. so this means
>> there's no need for extra CCS storage on such platforms.
>> Thats why we shouldn't need to run suspend-resume on xe2 dgpu.
>>
>> Signed-off-by: Akshata Jahagirdar <akshata.jahagirdar@intel.com>
>> Acked-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
>> ---
>>   tests/intel/xe_ccs.c | 26 ++++++++++++++++++++++----
>>   1 file changed, 22 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/intel/xe_ccs.c b/tests/intel/xe_ccs.c
>> index b3bf97af7..d6148dc44 100644
>> --- a/tests/intel/xe_ccs.c
>> +++ b/tests/intel/xe_ccs.c
>> @@ -162,8 +162,24 @@ static void surf_copy(int xe,
>>   						      (void *)mid->ptr, mid->size);
>>   
>>   		munmap(ccsmap2, ccssize);
>> -		igt_assert(!strcmp(orig, newsum));
>> -		igt_assert(!strcmp(orig2, newsum2));
>> +		if (blt_platform_has_flat_ccs_enabled(xe)) {
>> +			if (IS_GEN(xe, 12) && is_intel_dgfx(xe)) {
>> +				igt_assert(!strcmp(orig, newsum));
>> +				igt_assert(!strcmp(orig2, newsum2));
>> +			} else if (AT_LEAST_GEN(xe, 20)) {
>> +				if (is_intel_dgfx(xe)) {
>> +					/* buffer object would become
>> +					 * uncompressed in xe2+ dgfx
>> +					 */
>> +					igt_assert(!blt_surface_is_compressed(xe, ctx,
>> +							NULL, ahnd, mid));
>> +				} else {
>> +					/* ccs should be present in xe2+ igfx */
>> +					igt_assert(blt_surface_is_compressed(xe, ctx,
>> +							NULL, ahnd, mid));
>> +				}
>> +			}
>> +		}
> This part is fine for me, but below code doesn't work on Xe2/discrete.
> I mean I got:
>
> (xe_ccs:6919) CRITICAL: Test assertion failure function surf_copy, file ../tests/intel/xe_ccs.c:232:
> (xe_ccs:6919) CRITICAL: Failed assertion: result == 0
> (xe_ccs:6919) CRITICAL: Source and destination surfaces are different after restoring source ccs data
>
> After resume we put corrupted, then previous ccs data. In all cases
> along with uncompressed surface this leads to disaster. I mean for
> discrete instead putting original ccs data (this one extracted before
> suspend) you should fill it with zeros. Original ccs data were fine
> before suspend migrated surface to system memory, but after resume
> those ccs data are not valid anymore.
>
> I've verified that for Xe2/discrete:
>
> 	/* retrieve back ccs */
> 	/* memcpy(ccsmap, ccscopy, ccssize); */
> 	memset(ccsmap, 0, ccssize);
>
> does last blit work correctly.
>
> --
> Zbigniew
I see. But doing memset() would fail for ctrl-surf-copy subtest since 
the mid blt object would be compressed all along.
So, we need to copy the original ccs data to the mid blt object to copy 
it correctly to dst blt object.

So, we need to call memset() only in case of suspend-resume.

Best,
Akshata

>>   		g_free(orig);
>>   		g_free(orig2);
>>   		g_free(newsum);
>> @@ -193,7 +209,8 @@ static void surf_copy(int xe,
>>   	intel_ctx_xe_sync(ctx, true);
>>   	WRITE_PNG(xe, run_id, "corrupted", &blt.dst, dst->x2, dst->y2, bpp);
>>   	result = memcmp(src->ptr, dst->ptr, src->size);
>> -	igt_assert(result != 0);
>> +	if (!blt_platform_has_flat_ccs_enabled(xe))
>> +		igt_assert(result != 0);
>>   
>>   	/* retrieve back ccs */
>>   	memcpy(ccsmap, ccscopy, ccssize);
>> @@ -365,7 +382,8 @@ static void block_copy(int xe,
>>   	 * occurs and ctrl surface will be filled with some not-zeroed values.
>>   	 */
>>   	if (mid->compression && FROM_EXP_WH(width, height))
>> -		igt_assert(blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid));
>> +		if (!blt_platform_has_flat_ccs_enabled(xe))
>> +			igt_assert(blt_surface_is_compressed(xe, ctx, NULL, ahnd, mid));
>>   
>>   	WRITE_PNG(xe, run_id, "mid", &blt.dst, width, height, bpp);
>>   
>> -- 
>> 2.34.1
>>

  reply	other threads:[~2024-04-19  6:36 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-18  8:46 [PATCH i-g-t v6 0/2] Update compression check based on platform Akshata Jahagirdar
2024-04-17 22:41 ` ✓ Fi.CI.BAT: success for " Patchwork
2024-04-17 23:06 ` ✓ CI.xeBAT: " Patchwork
2024-04-18  8:46 ` [PATCH i-g-t v6 1/2] lib/intel_blt: Add helper function to ensure platform has flat-ccs enabled Akshata Jahagirdar
2024-04-18  8:46 ` [PATCH i-g-t v6 2/2] tests/xe_ccs: Update compression check based on flat-ccs enablement Akshata Jahagirdar
2024-04-18 13:59   ` Zbigniew Kempczyński
2024-04-19  6:36     ` Jahagirdar, Akshata [this message]
2024-04-19  7:41       ` Zbigniew Kempczyński
2024-04-19  0:16 ` ✗ Fi.CI.IGT: failure for Update compression check based on platform Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-04-20  3:36 [PATCH i-g-t v6 0/2] " Akshata Jahagirdar
2024-04-20  3:36 ` [PATCH i-g-t v6 2/2] tests/xe_ccs: Update compression check based on flat-ccs enablement Akshata Jahagirdar
2024-04-22  7:13   ` Zbigniew Kempczyński
2024-04-23  3:31     ` Jahagirdar, Akshata

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f32bd45b-e8c0-445c-bfa9-89ad216c4f0c@intel.com \
    --to=akshata.jahagirdar@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=jonathan.cavitt@intel.com \
    --cc=zbigniew.kempczynski@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox