[Intel-gfx] [PATCH i-g-t 4/7] lib/igt_kms: Only move the in cursor plane for Intel hw.
Robert Foss
robert.foss at collabora.com
Thu Apr 21 17:24:53 UTC 2016
On 04/21/2016 10:48 AM, Daniel Vetter wrote:
> On Wed, Apr 20, 2016 at 10:59:46AM -0400, robert.foss at collabora.com wrote:
>> From: Robert Foss <robert.foss at collabora.com>
>>
>> Avoid moving the cursor plane when on non-intel hardware.
>> Running the move block on hardware with more than IGT_PLANE_CURSOR
>> number of planes causes planes do be zeroed out.
>>
>> Signed-off-by: Robert Foss <robert.foss at collabora.com>
>> ---
>> lib/igt_kms.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
>> index 3f953ec..522ede5 100644
>> --- a/lib/igt_kms.c
>> +++ b/lib/igt_kms.c
>> @@ -1363,7 +1363,7 @@ void igt_display_init(igt_display_t *display, int drm_fd)
>> * only 1 sprite, that's the wrong slot and we need to
>> * move it down.
>> */
>> - if (p != IGT_PLANE_CURSOR) {
>> + if (IS_INTEL(drm_fd) && p != IGT_PLANE_CURSOR) {
> Reading this again, isn't the problem that on some hw there's simply no
> cursor plane? With universal planes the cursor plane should alias with
> some of the real planes, and we simply need to make sure that we get that
> aliasing right.
>
> But if there's no cursor registered, well there's no cursor ...
> -Daniel
From my point of view the problem is differentiating between the cases
when
IGT_PLANE_CURSOR is aliasing with IGT_PLANE_4 (IGT_PLANE_3+1).
IGT_PLANE_CURSOR is assumed to be the last plane in the if statement,
which isn't the case for platform with more than 4 planes.
So identifying which platforms this assumption is true (IS_INTEL()) and
only proceeding for those platforms seemed like reasonable fix.
Maybe a more generic solution is preferable.
>> pipe->planes[p] = pipe->planes[IGT_PLANE_CURSOR];
>> pipe->planes[p].index = p;
>> memset(&pipe->planes[IGT_PLANE_CURSOR], 0,
>> --
>> 2.5.0
>>
More information about the Intel-gfx
mailing list