From feb4ec510b1328fdd9aa77305d3273d1f9c7e124 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin Date: Thu, 9 Jun 2022 11:42:05 +0200 Subject: [PATCH] swrast_kms: use swkmsDRI2Extension instead of driDRI2Extension This set of changes: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15649 caused a regression in Xorg when using swrast_kms: (EE) AIGLX error: Calling driver entry point failed This commit changes the swrast_kms driver to use a dedicated screen init function (which I believe was overlooked); I also took the opportunity to rename the associated plumbling to have swrast-specific names. Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16942] Signed-off-by: Alexander Kanavin --- src/gallium/frontends/dri/dri2.c | 16 ++++++++-------- src/gallium/frontends/dri/dri_screen.h | 4 ++-- src/gallium/frontends/dri/dri_util.c | 2 +- src/gallium/targets/dri/target.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c index 63ac9d5..de33789 100644 --- a/src/gallium/frontends/dri/dri2.c +++ b/src/gallium/frontends/dri/dri2.c @@ -2508,7 +2508,7 @@ release_pipe: * Returns the struct gl_config supported by this driver. */ static const __DRIconfig ** -dri_kms_init_screen(__DRIscreen * sPriv) +dri_swrast_kms_init_screen(__DRIscreen * sPriv) { #if defined(GALLIUM_SOFTPIPE) const __DRIconfig **configs; @@ -2613,8 +2613,8 @@ static const struct __DRIDriverVtableExtensionRec galliumdrm_vtable = { * hook. The latter is used to explicitly initialise the kms_swrast driver * rather than selecting the approapriate driver as suggested by the loader. */ -const struct __DriverAPIRec dri_kms_driver_api = { - .InitScreen = dri_kms_init_screen, +const struct __DriverAPIRec dri_swrast_kms_driver_api = { + .InitScreen = dri_swrast_kms_init_screen, .DestroyScreen = dri_destroy_screen, .CreateBuffer = dri2_create_buffer, .DestroyBuffer = dri_destroy_buffer, @@ -2633,17 +2633,17 @@ const __DRIextension *galliumdrm_driver_extensions[] = { NULL }; -static const struct __DRIDriverVtableExtensionRec dri_kms_vtable = { +static const struct __DRIDriverVtableExtensionRec dri_swrast_kms_vtable = { .base = { __DRI_DRIVER_VTABLE, 1 }, - .vtable = &dri_kms_driver_api, + .vtable = &dri_swrast_kms_driver_api, }; -const __DRIextension *dri_kms_driver_extensions[] = { +const __DRIextension *dri_swrast_kms_driver_extensions[] = { &driCoreExtension.base, &driImageDriverExtension.base, - &driDRI2Extension.base, + &swkmsDRI2Extension.base, &gallium_config_options.base, - &dri_kms_vtable.base, + &dri_swrast_kms_vtable.base, NULL }; diff --git a/src/gallium/frontends/dri/dri_screen.h b/src/gallium/frontends/dri/dri_screen.h index 0ee2feb..0bb8817 100644 --- a/src/gallium/frontends/dri/dri_screen.h +++ b/src/gallium/frontends/dri/dri_screen.h @@ -168,8 +168,8 @@ dri_destroy_screen_helper(struct dri_screen * screen); void dri_destroy_screen(__DRIscreen * sPriv); -extern const struct __DriverAPIRec dri_kms_driver_api; -extern const __DRIextension *dri_kms_driver_extensions[]; +extern const struct __DriverAPIRec dri_swrast_kms_driver_api; +extern const __DRIextension *dri_swrast_kms_driver_extensions[]; extern const struct __DriverAPIRec galliumdrm_driver_api; extern const __DRIextension *galliumdrm_driver_extensions[]; extern const struct __DriverAPIRec galliumsw_driver_api; diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 8d60526..03614e1 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -187,7 +187,7 @@ swkmsCreateNewScreen(int scrn, int fd, const __DRIconfig ***driver_configs, void *data) { return driCreateNewScreen2(scrn, fd, extensions, - dri_kms_driver_extensions, + dri_swrast_kms_driver_extensions, driver_configs, data); } diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c index 9b78351..e02b03b 100644 --- a/src/gallium/targets/dri/target.c +++ b/src/gallium/targets/dri/target.c @@ -25,7 +25,7 @@ const __DRIextension **__driDriverGetExtensions_kms_swrast(void); PUBLIC const __DRIextension **__driDriverGetExtensions_kms_swrast(void) { - return dri_kms_driver_extensions; + return dri_swrast_kms_driver_extensions; } #endif