[PATCH i-g-t] tests/intel/kms_ccs: add access to control surface on xe2
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Wed Mar 20 13:12:53 UTC 2024
On 20.3.2024 13.34, Zbigniew Kempczyński wrote:
> On Wed, Mar 20, 2024 at 12:07:39PM +0200, Juha-Pekka Heikkila wrote:
>
> <cut>
>
>>>> + bb_size = xe_bb_size(fb->fd, SZ_4K);
>>>> + bb1 = xe_bo_create(fb->fd, 0, bb_size, sysmem, 0);
>>>> + blt_set_batch(&surf.bb, bb1, bb_size, sysmem);
>>>> + blt_ctrl_surf_copy(fb->fd, surf_ctx, NULL, surf_ahnd, &surf);
>>>> + intel_ctx_xe_sync(surf_ctx, true);
>>>> +
>>>> + ccsmap = xe_bo_map(fb->fd, ccs, surf.dst.size);
>>>> +
>>>> + if (verify_compression) {
>>>> + for (int i = 0; i < surf.dst.size / sizeof(uint32_t); i++) {
>>>> + if (ccsmap[i] != 0)
>>>> + goto ccs_vefiried;
>
> Problem I see for noise data in fb ccsmap[] will contain only zeros
> so we catch assert below.
>
but this part is on the other side of if() like this
+ if (verify_compression) {
+ for (int i = 0; i < surf.dst.size / sizeof(uint32_t); i++) {
+ if (ccsmap[i] != 0)
+ goto ccs_vefiried;
+ }
+ igt_assert_f(false, "framebuffer was not compressed!\n");
+ } else {
+ for (int i = 0; i < surf.dst.size / sizeof(uint32_t); i++)
+ ccsmap[i] = rand();
+ }
that verify_compression flag is set only when coming here from
xe2_ccs_blit() where on fb is always supposing to be compressed test
image. I made it this way just to avoid duplicating all the above code.
>>>
>>> That's minor nit, s/vefiried/verified/g.
>>>
>>> Second doesn't reside in this code, it is in the test itself:
>>>
>>> static void fill_fb_random(int drm_fd, igt_fb_t *fb)
>>> {
>>> ...
>>> for (i = 0; i < fb->size; i++)
>>> p[i] = rand();
>>> ...
>>>
>>> Randomized data might lead your surface won't be surprised at all (data
>>> are noise). I experimented with this some time ago when I played with
>>> ctrl-surf-copy. Noise wasn't compressible so I think you should less
>>> random data in case you want to check the ccs data.
>>
>> Idea of this test is exatcly as you described above. Throw completely random
>> data at control surface (same way as is done in aux ccs version of this
>> test) and see nothing breaks, ie. no hw hangs, no unexpected display
>> behaviors etc. Plan with this test is not to behave correctly towards hw but
>> just see hw survived unexpected situation.
>>
>> /Juha-Pekka
>>
>>>> + }
>>>> + igt_assert_f(false, "framebuffer was not compressed!\n");
>
> I mean this one. So if I'm not wrong on some noise you may be catched
> on assertion when fb won't be compressed due to data are not
> compressible. Really assertion is your intention?
When this side of that if() is being run we're coming from
xe2_ccs_blit() and on framebuffer is supposing to be compressed test
image. If there's no compression information it mean blit didn't
compress image hence assert as we have non-compressed test image.
/Juha-Pekka
More information about the igt-dev
mailing list