diff mbox

igt/kms_addfb_basic: New subtest to check for fb modifier and tiling mode mismatch

Message ID 1444185331-25751-1-git-send-email-vivek.kasireddy@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Kasireddy, Vivek Oct. 7, 2015, 2:35 a.m. UTC
This new subtest will validate a Y-tiled object's tiling mode against
its associated fb modifier.

Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
 tests/kms_addfb_basic.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Tvrtko Ursulin Oct. 7, 2015, 2:07 p.m. UTC | #1
Hi,

On 07/10/15 03:35, Vivek Kasireddy wrote:
> This new subtest will validate a Y-tiled object's tiling mode against
> its associated fb modifier.
>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> ---
>   tests/kms_addfb_basic.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index d466e4d..7ca1add 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -373,6 +373,15 @@ static void addfb25_ytile(int fd, int gen)
>   		f.handles[0] = gem_bo;
>   	}
>
> +	igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
> +		igt_require(gen >= 9);
> +		igt_require_fb_modifiers(fd);
> +		gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
> +
> +		f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
> +		igt_assert(drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
> +	}
> +
>   	igt_subtest("addfb25-Y-tiled") {
>   		igt_require_fb_modifiers(fd);
>

Wasn't the original WARN triggered by Y tiled object and Y fb modifier?

Regards,

Tvrtko
Kasireddy, Vivek Oct. 7, 2015, 9:07 p.m. UTC | #2
Hi Tvrtko,

On Wed, 7 Oct 2015 15:07:30 +0100
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:

> 
> Hi,
> 
> On 07/10/15 03:35, Vivek Kasireddy wrote:
> > This new subtest will validate a Y-tiled object's tiling mode
> > against its associated fb modifier.
> >
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> > ---
> >   tests/kms_addfb_basic.c | 9 +++++++++
> >   1 file changed, 9 insertions(+)
> >
> > diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> > index d466e4d..7ca1add 100644
> > --- a/tests/kms_addfb_basic.c
> > +++ b/tests/kms_addfb_basic.c
> > @@ -373,6 +373,15 @@ static void addfb25_ytile(int fd, int gen)
> >   		f.handles[0] = gem_bo;
> >   	}
> >
> > +	igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
> > +		igt_require(gen >= 9);
> > +		igt_require_fb_modifiers(fd);
> > +		gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
> > +
> > +		f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
> > +		igt_assert(drmIoctl(fd,
> > LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
> > +	}
> > +
> >   	igt_subtest("addfb25-Y-tiled") {
> >   		igt_require_fb_modifiers(fd);
> >
> 
> Wasn't the original WARN triggered by Y tiled object and Y fb
> modifier?

Creating a new fb using a Y-tiled object and Y/X fb modifier will not
trigger the original WARN. It'll be triggered only if the fb is going
to be pinned -- and flipped. I am not sure how to get that WARN to be
triggered with the existing suite of igt tests.


Thanks and Regards,
Vivek

> 
> Regards,
> 
> Tvrtko
> 
>
Tvrtko Ursulin Oct. 8, 2015, 8:55 a.m. UTC | #3
On 07/10/15 22:07, Vivek Kasireddy wrote:
>
> Hi Tvrtko,
>
> On Wed, 7 Oct 2015 15:07:30 +0100
> Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>
>>
>> Hi,
>>
>> On 07/10/15 03:35, Vivek Kasireddy wrote:
>>> This new subtest will validate a Y-tiled object's tiling mode
>>> against its associated fb modifier.
>>>
>>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
>>> ---
>>>    tests/kms_addfb_basic.c | 9 +++++++++
>>>    1 file changed, 9 insertions(+)
>>>
>>> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
>>> index d466e4d..7ca1add 100644
>>> --- a/tests/kms_addfb_basic.c
>>> +++ b/tests/kms_addfb_basic.c
>>> @@ -373,6 +373,15 @@ static void addfb25_ytile(int fd, int gen)
>>>    		f.handles[0] = gem_bo;
>>>    	}
>>>
>>> +	igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
>>> +		igt_require(gen >= 9);
>>> +		igt_require_fb_modifiers(fd);
>>> +		gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
>>> +
>>> +		f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
>>> +		igt_assert(drmIoctl(fd,
>>> LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
>>> +	}
>>> +
>>>    	igt_subtest("addfb25-Y-tiled") {
>>>    		igt_require_fb_modifiers(fd);
>>>
>>
>> Wasn't the original WARN triggered by Y tiled object and Y fb
>> modifier?
>
> Creating a new fb using a Y-tiled object and Y/X fb modifier will not
> trigger the original WARN. It'll be triggered only if the fb is going
> to be pinned -- and flipped. I am not sure how to get that WARN to be
> triggered with the existing suite of igt tests.

Ah yes, you would need to attempt display it, not even necessarily flip 
it. I am sure there are tests which do that. :) I know from recent 
activity kms_rotation_crc for example creates a Y tiled FB and displays 
it. So maybe borrow some code to start with from there.

Regards,

Tvrtko
Tvrtko Ursulin Oct. 9, 2015, 8:34 a.m. UTC | #4
On 08/10/15 09:55, Tvrtko Ursulin wrote:
> On 07/10/15 22:07, Vivek Kasireddy wrote:
>>
>> Hi Tvrtko,
>>
>> On Wed, 7 Oct 2015 15:07:30 +0100
>> Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>>
>>>
>>> Hi,
>>>
>>> On 07/10/15 03:35, Vivek Kasireddy wrote:
>>>> This new subtest will validate a Y-tiled object's tiling mode
>>>> against its associated fb modifier.
>>>>
>>>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
>>>> ---
>>>>    tests/kms_addfb_basic.c | 9 +++++++++
>>>>    1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
>>>> index d466e4d..7ca1add 100644
>>>> --- a/tests/kms_addfb_basic.c
>>>> +++ b/tests/kms_addfb_basic.c
>>>> @@ -373,6 +373,15 @@ static void addfb25_ytile(int fd, int gen)
>>>>            f.handles[0] = gem_bo;
>>>>        }
>>>>
>>>> +    igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
>>>> +        igt_require(gen >= 9);
>>>> +        igt_require_fb_modifiers(fd);
>>>> +        gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
>>>> +
>>>> +        f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
>>>> +        igt_assert(drmIoctl(fd,
>>>> LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
>>>> +    }
>>>> +
>>>>        igt_subtest("addfb25-Y-tiled") {
>>>>            igt_require_fb_modifiers(fd);
>>>>
>>>
>>> Wasn't the original WARN triggered by Y tiled object and Y fb
>>> modifier?
>>
>> Creating a new fb using a Y-tiled object and Y/X fb modifier will not
>> trigger the original WARN. It'll be triggered only if the fb is going
>> to be pinned -- and flipped. I am not sure how to get that WARN to be
>> triggered with the existing suite of igt tests.
>
> Ah yes, you would need to attempt display it, not even necessarily flip
> it. I am sure there are tests which do that. :) I know from recent
> activity kms_rotation_crc for example creates a Y tiled FB and displays
> it. So maybe borrow some code to start with from there.

Even better, kms_flip_tiling does the majority of what is needed here 
already. Just drop in a subtest which will do set_tiling and that should 
be good.

Regards,

Tvrtko
Kasireddy, Vivek Oct. 10, 2015, 12:46 a.m. UTC | #5
Hi Tvrtko,

On Fri, 9 Oct 2015 09:34:25 +0100
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:

> 
> 
> On 08/10/15 09:55, Tvrtko Ursulin wrote:
> > On 07/10/15 22:07, Vivek Kasireddy wrote:
> >>
> >> Hi Tvrtko,
> >>
> >> On Wed, 7 Oct 2015 15:07:30 +0100
> >> Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> >>
> >>>
> >>> Hi,
> >>>
> >>> On 07/10/15 03:35, Vivek Kasireddy wrote:
> >>>> This new subtest will validate a Y-tiled object's tiling mode
> >>>> against its associated fb modifier.
> >>>>
> >>>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> >>>> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> >>>> ---
> >>>>    tests/kms_addfb_basic.c | 9 +++++++++
> >>>>    1 file changed, 9 insertions(+)
> >>>>
> >>>> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> >>>> index d466e4d..7ca1add 100644
> >>>> --- a/tests/kms_addfb_basic.c
> >>>> +++ b/tests/kms_addfb_basic.c
> >>>> @@ -373,6 +373,15 @@ static void addfb25_ytile(int fd, int gen)
> >>>>            f.handles[0] = gem_bo;
> >>>>        }
> >>>>
> >>>> +    igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
> >>>> +        igt_require(gen >= 9);
> >>>> +        igt_require_fb_modifiers(fd);
> >>>> +        gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
> >>>> +
> >>>> +        f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
> >>>> +        igt_assert(drmIoctl(fd,
> >>>> LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
> >>>> +    }
> >>>> +
> >>>>        igt_subtest("addfb25-Y-tiled") {
> >>>>            igt_require_fb_modifiers(fd);
> >>>>
> >>>
> >>> Wasn't the original WARN triggered by Y tiled object and Y fb
> >>> modifier?
> >>
> >> Creating a new fb using a Y-tiled object and Y/X fb modifier will
> >> not trigger the original WARN. It'll be triggered only if the fb
> >> is going to be pinned -- and flipped. I am not sure how to get
> >> that WARN to be triggered with the existing suite of igt tests.
> >
> > Ah yes, you would need to attempt display it, not even necessarily
> > flip it. I am sure there are tests which do that. :) I know from
> > recent activity kms_rotation_crc for example creates a Y tiled FB
> > and displays it. So maybe borrow some code to start with from there.
> 
> Even better, kms_flip_tiling does the majority of what is needed here 
> already. Just drop in a subtest which will do set_tiling and that
> should be good.

Thank you for your suggestion. I am currently having problems with my
hardware. After resolving these, I'll look into kms_flip_tiling and
send out a patch soon.


Thanks and Regards,
Vivek

> 
> Regards,
> 
> Tvrtko
> 
>
diff mbox

Patch

diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index d466e4d..7ca1add 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -373,6 +373,15 @@  static void addfb25_ytile(int fd, int gen)
 		f.handles[0] = gem_bo;
 	}
 
+	igt_subtest("addfb25-Y-tiled-X-modifier-mismatch") {
+		igt_require(gen >= 9);
+		igt_require_fb_modifiers(fd);
+		gem_set_tiling(fd, gem_bo, I915_TILING_Y, 1024*4);
+
+		f.modifier[0] = LOCAL_I915_FORMAT_MOD_X_TILED;
+		igt_assert(drmIoctl(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) < 0 && errno == EINVAL);
+	}
+
 	igt_subtest("addfb25-Y-tiled") {
 		igt_require_fb_modifiers(fd);