Bug 108024 - [Debian Stretch]Fail to build because "xcb_randr_lease_t"
Summary: [Debian Stretch]Fail to build because "xcb_randr_lease_t"
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Vulkan/radeon (show other bugs)
Version: 18.2
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-09-23 00:38 UTC by Maxime
Modified: 2018-09-27 07:47 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Build log error radeon vulkan (1.69 MB, text/plain)
2018-09-23 00:38 UTC, Maxime
Details
Disable lease for libxcb < 1.13 (556 bytes, patch)
2018-09-23 21:12 UTC, Maxime
Details | Splinter Review

Description Maxime 2018-09-23 00:38:48 UTC
Created attachment 141692 [details]
Build log error radeon vulkan

Hello,

I try to build Mesa 18.2.1 on Debian Stretch with version 1.12 of libxcb packages. Unfortunatly, the build fails during the compilation of Radeon Vulkan driver about  "xcb_randr_lease_t" / "xcb_randr_create_lease_cookie_t" etc ... type name which are unknown.

I attach the complete build log. The errors are at the end of file.

Thanks,
Maxime
Comment 1 Stuart Young 2018-09-23 01:04:44 UTC
Probably needs libxcb-1.13 (released March 2018). From the xcb release notes https://lists.freedesktop.org/archives/xcb/2018-March/011090.html :

This release of xcb-proto brings support for buffer modifiers and
multi-planar buffers through DRI3 v1.2 and Present v1.2, support for
leasing KMS devices to clients via RandR 1.6, and also allows clients
to send each other XInput2 events via support for the GenericEvent
extension's SendExtension event.

.. specifically wrt RandR leases.

Suspect that the code simply doesn't compile if an older version of libxcb is installed.

Options:
 1. Code gets corrected to handle if an older version of libxcb is installed.
 2. Install libxcb 1.13. Note that it's not in stretch-backports so either you will need to backport it yourself from buster, or request a backport on the debian-backorts list.
Comment 2 Stuart Young 2018-09-23 01:31:42 UTC
Suspect this is the related commit where the randr leases code was added: https://cgit.freedesktop.org/mesa/mesa/commit/?id=7ab1fffcd2a504024b16e408de329f7a94553ecc

A quick look at similar commits for radv and anv don't reference randr leases, so it seems it's just vulkan that's affected.

Related:

1. https://cgit.freedesktop.org/mesa/mesa/commit/?id=c9b153fea746fa0bef100d72d157e534dbd44905 updates travis to use libxcb 1.13, so it seems a requirement for at least libxcb 1.13 to be used was expected.

2. https://cgit.freedesktop.org/mesa/mesa/commit/?id=7aeef2d4efdc809a698e9b983c8be8e4ccb27134 (after travis update) suggests that building against older versions of libxcb should still be supported.
Comment 3 Maxime 2018-09-23 21:12:14 UTC
Created attachment 141701 [details] [review]
Disable lease for libxcb < 1.13

Hello,

I'm not an expert about Mesa development but i found a workaround to compile Mesa 18.2.1 on Debian Stretch. Stretch has libxcb 1.12 and without this patch, the compilation for Vulkan drivers fails.

If someone can create a better patch and implement it in the next release 18.2.x, it will be great. And if it's possible obviously.

I try mesa 18.2.1 on Stretch with DXVK games like Vampyr, Divinity Original Sin 2 and Assassin's Creed : Unity. All these games work without problems.

Cheers,
Maxime
Comment 4 Stuart Young 2018-09-23 21:58:00 UTC
Hi Maxime,

Looks good to me (tho I am not an expert either), and same sort of fix as Dave Airlie's patch to support older versions of libxcb.

Will see if I can get this in to Mesa & 18.2.2. If it takes some time, I'll log a bug report against Mesa in Debian as well with a link to this report/patch.

Fixes: 7ab1fffcd2a504024b16e408de329f7a94553ecc
Comment 5 Stuart Young 2018-09-27 07:47:14 UTC
This should now be fixed in commit dd333c66bdcb11c0d7c5


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.