glx: only print zink failure-to-load messages if explicitly requested
if zink is inferred, let it fail silently ref #10293 Acked-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27836>
This commit is contained in:

committed by
Marge Bot

parent
571effdf08
commit
e4d45c582b
@@ -1001,7 +1001,9 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
if (!psc->has_multibuffer &&
|
||||
!debug_get_bool_option("LIBGL_ALWAYS_SOFTWARE", false) &&
|
||||
!debug_get_bool_option("LIBGL_KOPPER_DRI2", false)) {
|
||||
CriticalErrorMessageF("DRI3 not available\n");
|
||||
/* only print error if zink was explicitly requested */
|
||||
if (pdpyp->zink == TRY_ZINK_YES)
|
||||
CriticalErrorMessageF("DRI3 not available\n");
|
||||
goto handle_error;
|
||||
}
|
||||
}
|
||||
@@ -1049,7 +1051,8 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
glx_screen_cleanup(&psc->base);
|
||||
free(psc);
|
||||
|
||||
CriticalErrorMessageF("failed to load driver: %s\n", driver);
|
||||
if (pdpyp->zink == TRY_ZINK_YES)
|
||||
CriticalErrorMessageF("failed to load driver: %s\n", driver);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -1079,7 +1082,7 @@ driswDestroyDisplay(__GLXDRIdisplay * dpy)
|
||||
* display pointer.
|
||||
*/
|
||||
_X_HIDDEN __GLXDRIdisplay *
|
||||
driswCreateDisplay(Display * dpy, bool zink)
|
||||
driswCreateDisplay(Display * dpy, enum try_zink zink)
|
||||
{
|
||||
struct drisw_display *pdpyp;
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
struct drisw_display
|
||||
{
|
||||
__GLXDRIdisplay base;
|
||||
bool zink;
|
||||
enum try_zink zink;
|
||||
};
|
||||
|
||||
struct drisw_screen
|
||||
|
@@ -133,11 +133,17 @@ struct __GLXDRIdrawableRec
|
||||
int refcount;
|
||||
};
|
||||
|
||||
enum try_zink {
|
||||
TRY_ZINK_NO,
|
||||
TRY_ZINK_INFER,
|
||||
TRY_ZINK_YES,
|
||||
};
|
||||
|
||||
/*
|
||||
** Function to create and DRI display data and initialize the display
|
||||
** dependent methods.
|
||||
*/
|
||||
extern __GLXDRIdisplay *driswCreateDisplay(Display * dpy, bool zink);
|
||||
extern __GLXDRIdisplay *driswCreateDisplay(Display * dpy, enum try_zink zink);
|
||||
extern __GLXDRIdisplay *dri2CreateDisplay(Display * dpy);
|
||||
extern __GLXDRIdisplay *dri3_create_display(Display * dpy);
|
||||
extern __GLXDRIdisplay *driwindowsCreateDisplay(Display * dpy);
|
||||
|
@@ -918,7 +918,8 @@ __glXInitialize(Display * dpy)
|
||||
}
|
||||
#endif /* GLX_USE_DRM */
|
||||
if (glx_direct)
|
||||
dpyPriv->driswDisplay = driswCreateDisplay(dpy, zink | try_zink);
|
||||
dpyPriv->driswDisplay = driswCreateDisplay(dpy, zink ? TRY_ZINK_YES :
|
||||
try_zink ? TRY_ZINK_INFER : TRY_ZINK_NO);
|
||||
|
||||
#ifdef GLX_USE_WINDOWSGL
|
||||
if (glx_direct && glx_accel)
|
||||
@@ -939,7 +940,7 @@ __glXInitialize(Display * dpy)
|
||||
if (try_zink) {
|
||||
free(dpyPriv->screens);
|
||||
dpyPriv->driswDisplay->destroyDisplay(dpyPriv->driswDisplay);
|
||||
dpyPriv->driswDisplay = driswCreateDisplay(dpy, false);
|
||||
dpyPriv->driswDisplay = driswCreateDisplay(dpy, TRY_ZINK_NO);
|
||||
fail = !AllocAndFetchScreenConfigs(dpy, dpyPriv, False);
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user