Hi Eric,
On 24.07.18 18:43, Eric Engestrom wrote:
On Friday, 2018-07-13 16:57:34 +0300, Danylo Piliaiev wrote:Make xlease automatically enabled only if xcb-randr >= 1.13, check its version if manually enabled. Enable VK_EXT_display_control only when libdrm >= 2.4.89 Check for DRM_EVENT_CONTEXT_VERSION >= 4 to use sequence_handler.You're changing 3 unrelated things here; please send 3 patches :)
Ok, I'll separate patches this time: 1) xcb-randr check 2) Bumping libdrm for vulkan 3) Removal checks of DRM_EVENT_CONTEXT_VERSION as suggested by Emil.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107170 https://bugs.freedesktop.org/show_bug.cgi?id=106972 https://bugs.freedesktop.org/show_bug.cgi?id=107176 v2: - Add 'protect="VK_USE_DISPLAY_CONTROL"' attribute to VK_EXT_display_control in vk.xml - Add support for 'protect' attribute to anv_entrypoints_gen (copied from radv_entrypoints_gen) - Turn #if into #ifdef - Remove unnecessary pkg-config call from meson build (Dylan Baker) v3: by Dylan Baker - Remove previously added changes to vk.xml and entrypoints generation because vk.xml is meant to be pulled from the external source. Signed-off-by: Danylo Piliaiev <danylo.pilia...@globallogic.com> --- configure.ac | 29 +++++++++++++------------- meson.build | 10 ++++++++- src/amd/vulkan/radv_extensions.py | 9 +++++++- src/amd/vulkan/radv_wsi_display.c | 5 ++--- src/intel/vulkan/anv_extensions.py | 2 +- src/intel/vulkan/anv_extensions_gen.py | 7 +++++++ src/intel/vulkan/anv_wsi_display.c | 4 ++-- src/vulkan/wsi/wsi_common_display.c | 8 +++++-- src/vulkan/wsi/wsi_common_display.h | 3 ++- 9 files changed, 51 insertions(+), 26 deletions(-) diff --git a/configure.ac b/configure.ac index f135d05736..0b04525014 100644 --- a/configure.ac +++ b/configure.ac @@ -82,6 +82,8 @@ LIBDRM_FREEDRENO_REQUIRED=2.4.92 LIBDRM_ETNAVIV_REQUIRED=2.4.89 LIBDRM_VC4_REQUIRED=2.4.89+LIBDRM_CRT_SEQUENCE_REQUIRED=2.4.89I agree with everyone else here: just bump the libdrm version required for vulkan :)
Making sure I got it right:Since it's vulkan only issue LIBDRM_REQUIRED=2.4.75 should be left intact and
new variable like LIBDRM_VULKAN_REQUIRED=2.4.89 be introduced which will be checked when vulkan is enabled.
libdrm is absolutely trivial to update; any system that can update its mesa can also update its libdrm.
Didn't notice that it's easy to update, thanks.
It happens in .c file so it cannot escape anywhere and there is similar constructions nearby with same purpose, also since we are bumping lidrm version this fortunately won't be necessary because it looks ugly for me too.+ dnl Versions for external dependencies DRI2PROTO_REQUIRED=2.8 GLPROTO_REQUIRED=1.4.14 @@ -97,6 +99,7 @@ XCBDRI2_REQUIRED=1.8 XCBDRI3_MODIFIERS_REQUIRED=1.13 XCBGLX_REQUIRED=1.8.1 XCBPRESENT_MODIFIERS_REQUIRED=1.13 +XCBRANDR_XLEASE_REQUIRED=1.13 XDAMAGE_REQUIRED=1.1 XSHMFENCE_REQUIRED=1.1 XVMC_REQUIRED=1.0.6 @@ -1874,20 +1877,6 @@ if test x"$enable_dri3" = xyes; then fi fi--if echo "$platforms" | grep -q 'x11' && echo "$platforms" | grep -q 'drm'; then - have_xlease=yes -else - have_xlease=no -fi - -if test x"$have_xlease" = xyes; then - randr_modules="x11-xcb xcb-randr" - PKG_CHECK_MODULES([XCB_RANDR], [$randr_modules]) - xlib_randr_modules="xrandr" - PKG_CHECK_MODULES([XLIB_RANDR], [$xlib_randr_modules]) -fi - AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$platforms" | grep -q 'x11') AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$platforms" | grep -q 'wayland') AM_CONDITIONAL(HAVE_PLATFORM_DRM, echo "$platforms" | grep -q 'drm') @@ -1905,14 +1894,24 @@ xno) ;; *) if echo "$platforms" | grep -q 'x11' && echo "$platforms" | grep -q 'drm'; then - enable_xlib_lease=yes + xlease_modules="x11-xcb xcb-randr >= $XCBRANDR_XLEASE_REQUIRED xrandr" + PKG_CHECK_EXISTS([$xlease_modules], [enable_xlib_lease=yes], [enable_xlib_lease=no]) else enable_xlib_lease=no fi esac+if test x"$enable_xlib_lease" = xyes; then+ randr_modules="x11-xcb xcb-randr >= $XCBRANDR_XLEASE_REQUIRED" + PKG_CHECK_MODULES([XCB_RANDR], [$randr_modules]) + xlib_randr_modules="xrandr" + PKG_CHECK_MODULES([XLIB_RANDR], [$xlib_randr_modules]) +fi + AM_CONDITIONAL(HAVE_XLIB_LEASE, test "x$enable_xlib_lease" = xyes)+PKG_CHECK_EXISTS([libdrm >= $LIBDRM_CRT_SEQUENCE_REQUIRED], [DEFINES="${DEFINES} -DVK_USE_DISPLAY_CONTROL"], [])+ dnl dnl More DRI setup dnl diff --git a/meson.build b/meson.build index 7d12af3d51..902074819c 100644 --- a/meson.build +++ b/meson.build @@ -1088,6 +1088,8 @@ _drm_freedreno_ver = '2.4.92' _drm_intel_ver = '2.4.75' _drm_ver = '2.4.75'+_drm_crt_sequence_ver = '2.4.89'+ _libdrm_checks = [ ['intel', with_dri_i915 or with_gallium_i915], ['amdgpu', with_amd_vk or with_gallium_radeonsi], @@ -1361,11 +1363,17 @@ if with_platform_x11 dep_xcb_xfixes = dependency('xcb-xfixes') endif if with_xlib_lease - dep_xcb_xrandr = dependency('xcb-randr', version : '>= 1.12') + dep_xcb_xrandr = dependency('xcb-randr', version : '>= 1.13') dep_xlib_xrandr = dependency('xrandr', version : '>= 1.3') endif endif+if with_any_vk+ if dep_libdrm.version().version_compare('>= ' + _drm_crt_sequence_ver) + pre_args += '-DVK_USE_DISPLAY_CONTROL' + endif +endif + if get_option('gallium-extra-hud') pre_args += '-DHAVE_GALLIUM_EXTRA_HUD=1' endif diff --git a/src/amd/vulkan/radv_extensions.py b/src/amd/vulkan/radv_extensions.py index 094ed3bce3..35b49243a3 100644 --- a/src/amd/vulkan/radv_extensions.py +++ b/src/amd/vulkan/radv_extensions.py @@ -92,7 +92,7 @@ EXTENSIONS = [ Extension('VK_EXT_direct_mode_display', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), Extension('VK_EXT_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'), Extension('VK_EXT_display_surface_counter', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), - Extension('VK_EXT_display_control', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), + Extension('VK_EXT_display_control', 1, 'VK_USE_DISPLAY_CONTROL'), Extension('VK_EXT_debug_report', 9, True), Extension('VK_EXT_depth_range_unrestricted', 1, True), Extension('VK_EXT_descriptor_indexing', 2, True), @@ -239,6 +239,13 @@ _TEMPLATE_C = Template(COPYRIGHT + """ # define ANDROID false #endif+#ifdef VK_USE_DISPLAY_CONTROL+# undef VK_USE_DISPLAY_CONTROL +# define VK_USE_DISPLAY_CONTROL true +#else +# define VK_USE_DISPLAY_CONTROL false +#endifDon't do that, you're breaking all your own #ifdef checks :)
+ #define RADV_HAS_SURFACE (VK_USE_PLATFORM_WAYLAND_KHR || \\ VK_USE_PLATFORM_XCB_KHR || \\ VK_USE_PLATFORM_XLIB_KHR || \\ diff --git a/src/amd/vulkan/radv_wsi_display.c b/src/amd/vulkan/radv_wsi_display.c index d8743a06e3..a932e05ce8 100644 --- a/src/amd/vulkan/radv_wsi_display.c +++ b/src/amd/vulkan/radv_wsi_display.c @@ -252,8 +252,7 @@ radv_GetRandROutputDisplayEXT(VkPhysicalDevice physical_device, } #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */-/* VK_EXT_display_control */- +#ifdef VK_USE_DISPLAY_CONTROL VkResult radv_DisplayPowerControlEXT(VkDevice _device, VkDisplayKHR display, @@ -351,4 +350,4 @@ radv_GetSwapchainCounterEXT(VkDevice _device, flag_bits, value); } - +#endif /* VK_USE_DISPLAY_CONTROL */ diff --git a/src/intel/vulkan/anv_extensions.py b/src/intel/vulkan/anv_extensions.py index adc1d75898..defd153095 100644 --- a/src/intel/vulkan/anv_extensions.py +++ b/src/intel/vulkan/anv_extensions.py @@ -116,7 +116,7 @@ EXTENSIONS = [ Extension('VK_EXT_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'), Extension('VK_EXT_debug_report', 8, True), Extension('VK_EXT_direct_mode_display', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), - Extension('VK_EXT_display_control', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), + Extension('VK_EXT_display_control', 1, 'VK_USE_DISPLAY_CONTROL'), Extension('VK_EXT_display_surface_counter', 1, 'VK_USE_PLATFORM_DISPLAY_KHR'), Extension('VK_EXT_external_memory_dma_buf', 1, True), Extension('VK_EXT_global_priority', 1, diff --git a/src/intel/vulkan/anv_extensions_gen.py b/src/intel/vulkan/anv_extensions_gen.py index a140c26745..914db7bd0e 100644 --- a/src/intel/vulkan/anv_extensions_gen.py +++ b/src/intel/vulkan/anv_extensions_gen.py @@ -120,6 +120,13 @@ _TEMPLATE_C = Template(COPYRIGHT + """ # define ANDROID false #endif+#ifdef VK_USE_DISPLAY_CONTROL+# undef VK_USE_DISPLAY_CONTROL +# define VK_USE_DISPLAY_CONTROL true +#else +# define VK_USE_DISPLAY_CONTROL false +#endif + #define ANV_HAS_SURFACE (VK_USE_PLATFORM_WAYLAND_KHR || \\ VK_USE_PLATFORM_XCB_KHR || \\ VK_USE_PLATFORM_XLIB_KHR || \\ diff --git a/src/intel/vulkan/anv_wsi_display.c b/src/intel/vulkan/anv_wsi_display.c index 3212c235ba..a915e1e9f7 100644 --- a/src/intel/vulkan/anv_wsi_display.c +++ b/src/intel/vulkan/anv_wsi_display.c @@ -231,8 +231,7 @@ anv_GetRandROutputDisplayEXT(VkPhysicalDevice physical_device, } #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */-/* VK_EXT_display_control */- +#ifdef VK_USE_DISPLAY_CONTROL VkResult anv_DisplayPowerControlEXT(VkDevice _device, VkDisplayKHR display, @@ -315,3 +314,4 @@ anv_GetSwapchainCounterEXT(VkDevice _device, _device, &device->instance->physicalDevice.wsi_device, swapchain, flag_bits, value); } +#endif /* VK_USE_DISPLAY_CONTROL */ diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c index ac932d4368..91ce8706b5 100644 --- a/src/vulkan/wsi/wsi_common_display.c +++ b/src/vulkan/wsi/wsi_common_display.c @@ -1131,7 +1131,9 @@ static drmEventContext event_context = { .page_flip_handler2 = wsi_display_page_flip_handler2, #endif .vblank_handler = wsi_display_vblank_handler, +#if DRM_EVENT_CONTEXT_VERSION >= 4 .sequence_handler = wsi_display_sequence_handler, +#endif };static void *@@ -1459,6 +1461,7 @@ static void wsi_display_fence_event_handler(struct wsi_display_fence *fence) wsi_display_fence_check_free(fence); }+#ifdef VK_USE_DISPLAY_CONTROLstatic void wsi_display_fence_destroy(struct wsi_fence *fence_wsi) { @@ -1551,6 +1554,7 @@ wsi_register_vblank_event(struct wsi_display_fence *fence, } } } +#endif /* VK_USE_DISPLAY_CONTROL *//** Check to see if the kernel has no flip queued and if there's an image @@ -2348,7 +2352,7 @@ wsi_get_randr_output_display(VkPhysicalDevice physical_device,#endif -/* VK_EXT_display_control */+#ifdef VK_USE_DISPLAY_CONTROL VkResult wsi_display_power_control(VkDevice device, struct wsi_device *wsi_device, @@ -2459,4 +2463,4 @@ wsi_get_swapchain_counter(VkDevice device,return VK_SUCCESS;} - +#endif /* VK_USE_DISPLAY_CONTROL */ diff --git a/src/vulkan/wsi/wsi_common_display.h b/src/vulkan/wsi/wsi_common_display.h index 50d7f836a7..1b2d6c5d76 100644 --- a/src/vulkan/wsi/wsi_common_display.h +++ b/src/vulkan/wsi/wsi_common_display.h @@ -131,7 +131,7 @@ wsi_get_randr_output_display(VkPhysicalDevice physical_device,#endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */ -/* VK_EXT_display_control */+#ifdef VK_USE_DISPLAY_CONTROL VkResult wsi_display_power_control(VkDevice device, struct wsi_device *wsi_device, @@ -159,5 +159,6 @@ wsi_get_swapchain_counter(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT flag_bits, uint64_t *value); +#endif /* VK_USE_DISPLAY_CONTROL */#endif-- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev