Accepting request 1159850 from X11:XOrg
- Add patch to fix boo#1221664: * mesa-fix-llvm18.patch - 0010-glx-silence-more-implicit-load-zink-errors.patch * glx: silence more implicit-load zink errors [gitlab mesa issue #10802] - 0001-loader-delete-unused-param-from-pipe_loader_sw_probe.patch, 0002-glx-fix-some-indentation.patch, 0003-glx-add-an-implicit-param-to-createScreen.patch, 0004-glx-pass-implicit-load-param-through-allocation.patch, 0005-dri-plumb-a-implicit-param-through-createNewScreen-i.patch, 0006-gbm-plumb-an-implicit-param-through-device-creation.patch, 0007-frontends-dri-plumb-an-implicit-param-through-screen.patch, 0008-pipe-loader-plumb-a-flag-for-implicit-driver-load-th.patch, 0009-zink-don-t-print-error-messages-when-failing-an-impl.patch * get rid of error message: 'MESA: error: ZINK: vkEnumeratePhysicalDevices failed (VK_ERROR_INITIALIZATION_FAILED)' [gitlab mesa issue #10802] - adjusted and re-enabled python36-buildfix1.patch - Update to new feature release 24.0.3 * Some interesting highlights include: + New PowerVR Vulkan driver for Imagination's GPU + NVIDIA Vulkan driver NVK has seen many improvements + AMD Vulkan driver RADV ray-tracing performance improvements + Microsoft OpenGL driver D3D12 has reached OpenGL 4.6 support * New extensions & features (in no particular order): + VK_EXT_image_compression_control on RADV + VK_EXT_device_fault on RADV + OpenGL 3.3 on Asahi + Geometry shaders on Asahi + GL_ARB_texture_cube_map_array on Asahi + GL_ARB_clip_control on Asahi + GL_ARB_timer_query on Asahi + GL_EXT_disjoint_timer_query on Asahi + GL_ARB_base_instance on Asahi + OpenGL 4.6 (up from 4.2) on d3d12 + VK_EXT_depth_clamp_zero_one on RADV + GL_ARB_shader_texture_image_samples on Asahi + GL_ARB_indirect_parameters on Asahi + GL_ARB_viewport_array on Asahi + GL_ARB_fragment_layer_viewport on Asahi + GL_ARB_cull_distance on Asahi + GL_ARB_transform_feedback_overflow_query on Asahi + VK_KHR_calibrated_timestamps on RADV + VK_KHR_vertex_attribute_divisor on RADV + VK_KHR_maintenance6 on RADV + VK_KHR_ray_tracing_position_fetch on RADV + EGL_EXT_query_reset_notification_strategy - supersedes U_fix-ac-llvm-LLVM-18-remove-useless-passes.patch - adjusted n_add-Mesa-headers-again.patch, u_dep_xcb.patch - disabled python36-buildfix1.patch - removed disabled patch u_fix-build-on-ppc64le.patch - get rid of u_zink-dont-print-error-messages-when-failing-an-implicit.patch completely OBS-URL: https://build.opensuse.org/request/show/1159850 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/Mesa?expand=0&rev=498
This commit is contained in:
commit
3938559252
@ -0,0 +1,61 @@
|
||||
From 1b1ebd90a5b0edd70e2c548b64aeded9cac3e570 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 09:15:11 -0400
|
||||
Subject: [PATCH 1/9] loader: delete unused param from
|
||||
pipe_loader_sw_probe_dri()
|
||||
|
||||
---
|
||||
src/gallium/auxiliary/pipe-loader/pipe_loader.h | 3 +--
|
||||
src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 4 ++--
|
||||
src/gallium/frontends/dri/kopper.c | 2 +-
|
||||
3 files changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
@@ -155,8 +155,7 @@ pipe_loader_sw_probe_dri(struct pipe_loa
|
||||
* \sa pipe_loader_probe
|
||||
*/
|
||||
bool
|
||||
-pipe_loader_vk_probe_dri(struct pipe_loader_device **devs,
|
||||
- const struct drisw_loader_funcs *drisw_lf);
|
||||
+pipe_loader_vk_probe_dri(struct pipe_loader_device **devs);
|
||||
|
||||
#ifdef HAVE_DRISW_KMS
|
||||
/**
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
|
||||
@@ -233,7 +233,7 @@ fail:
|
||||
}
|
||||
#ifdef HAVE_ZINK
|
||||
bool
|
||||
-pipe_loader_vk_probe_dri(struct pipe_loader_device **devs, const struct drisw_loader_funcs *drisw_lf)
|
||||
+pipe_loader_vk_probe_dri(struct pipe_loader_device **devs)
|
||||
{
|
||||
struct pipe_loader_sw_device *sdev = CALLOC_STRUCT(pipe_loader_sw_device);
|
||||
int i;
|
||||
@@ -246,7 +246,7 @@ pipe_loader_vk_probe_dri(struct pipe_loa
|
||||
|
||||
for (i = 0; sdev->dd->winsys[i].name; i++) {
|
||||
if (strcmp(sdev->dd->winsys[i].name, "dri") == 0) {
|
||||
- sdev->ws = sdev->dd->winsys[i].create_winsys_dri(drisw_lf);
|
||||
+ sdev->ws = sdev->dd->winsys[i].create_winsys_dri(NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/kopper.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
@@ -128,7 +128,7 @@ kopper_init_screen(struct dri_screen *sc
|
||||
if (screen->fd != -1)
|
||||
success = pipe_loader_drm_probe_fd(&screen->dev, screen->fd, false);
|
||||
else
|
||||
- success = pipe_loader_vk_probe_dri(&screen->dev, NULL);
|
||||
+ success = pipe_loader_vk_probe_dri(&screen->dev);
|
||||
|
||||
if (success)
|
||||
pscreen = pipe_loader_create_screen(screen->dev);
|
34
0002-glx-fix-some-indentation.patch
Normal file
34
0002-glx-fix-some-indentation.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 647f6a7e123726d306440d54a22880e67ab31aa8 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 09:20:25 -0400
|
||||
Subject: [PATCH 2/9] glx: fix some indentation
|
||||
|
||||
ifdefs are hard
|
||||
---
|
||||
src/glx/glxext.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/glx/glxext.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxext.c
|
||||
+++ mesa-24.0.3/src/glx/glxext.c
|
||||
@@ -786,16 +786,16 @@ AllocAndFetchScreenConfigs(Display * dpy
|
||||
psc = priv->dri3Display->createScreen(i, priv);
|
||||
#endif /* HAVE_DRI3 */
|
||||
if (psc == NULL && priv->dri2Display)
|
||||
- psc = priv->dri2Display->createScreen(i, priv);
|
||||
+ psc = priv->dri2Display->createScreen(i, priv);
|
||||
#endif /* GLX_USE_DRM */
|
||||
|
||||
#ifdef GLX_USE_WINDOWSGL
|
||||
if (psc == NULL && priv->windowsdriDisplay)
|
||||
- psc = priv->windowsdriDisplay->createScreen(i, priv);
|
||||
+ psc = priv->windowsdriDisplay->createScreen(i, priv);
|
||||
#endif
|
||||
|
||||
if (psc == NULL && priv->driswDisplay)
|
||||
- psc = priv->driswDisplay->createScreen(i, priv);
|
||||
+ psc = priv->driswDisplay->createScreen(i, priv);
|
||||
#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
|
||||
|
||||
bool indirect = false;
|
107
0003-glx-add-an-implicit-param-to-createScreen.patch
Normal file
107
0003-glx-add-an-implicit-param-to-createScreen.patch
Normal file
@ -0,0 +1,107 @@
|
||||
From 2dedd2e26dce587e1efe8250f8f2da60db906071 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 09:36:57 -0400
|
||||
Subject: [PATCH 3/9] glx: add an 'implicit' param to createScreen
|
||||
|
||||
---
|
||||
src/glx/dri2_glx.c | 2 +-
|
||||
src/glx/dri3_glx.c | 2 +-
|
||||
src/glx/drisw_glx.c | 2 +-
|
||||
src/glx/driwindows_glx.c | 2 +-
|
||||
src/glx/glxclient.h | 2 +-
|
||||
src/glx/glxext.c | 8 ++++----
|
||||
6 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/glx/dri2_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/dri2_glx.c
|
||||
+++ mesa-24.0.3/src/glx/dri2_glx.c
|
||||
@@ -1001,7 +1001,7 @@ static const struct glx_screen_vtable dr
|
||||
};
|
||||
|
||||
static struct glx_screen *
|
||||
-dri2CreateScreen(int screen, struct glx_display * priv)
|
||||
+dri2CreateScreen(int screen, struct glx_display * priv, bool implicit)
|
||||
{
|
||||
const __DRIconfig **driver_configs;
|
||||
const __DRIextension **extensions;
|
||||
Index: mesa-24.0.3/src/glx/dri3_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/dri3_glx.c
|
||||
+++ mesa-24.0.3/src/glx/dri3_glx.c
|
||||
@@ -789,7 +789,7 @@ static const struct glx_screen_vtable dr
|
||||
*/
|
||||
|
||||
static struct glx_screen *
|
||||
-dri3_create_screen(int screen, struct glx_display * priv)
|
||||
+dri3_create_screen(int screen, struct glx_display * priv, bool implicit)
|
||||
{
|
||||
xcb_connection_t *c = XGetXCBConnection(priv->dpy);
|
||||
const __DRIconfig **driver_configs;
|
||||
Index: mesa-24.0.3/src/glx/drisw_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/drisw_glx.c
|
||||
+++ mesa-24.0.3/src/glx/drisw_glx.c
|
||||
@@ -1055,7 +1055,7 @@ driswCreateScreenDriver(int screen, stru
|
||||
}
|
||||
|
||||
static struct glx_screen *
|
||||
-driswCreateScreen(int screen, struct glx_display *priv)
|
||||
+driswCreateScreen(int screen, struct glx_display *priv, bool implicit)
|
||||
{
|
||||
const struct drisw_display *pdpyp = (struct drisw_display *)priv->driswDisplay;
|
||||
if (pdpyp->zink && !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false)) {
|
||||
Index: mesa-24.0.3/src/glx/driwindows_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/driwindows_glx.c
|
||||
+++ mesa-24.0.3/src/glx/driwindows_glx.c
|
||||
@@ -461,7 +461,7 @@ driwindowsMapConfigs(struct glx_display
|
||||
}
|
||||
|
||||
static struct glx_screen *
|
||||
-driwindowsCreateScreen(int screen, struct glx_display *priv)
|
||||
+driwindowsCreateScreen(int screen, struct glx_display *priv, bool implicit)
|
||||
{
|
||||
__GLXDRIscreen *psp;
|
||||
struct driwindows_screen *psc;
|
||||
Index: mesa-24.0.3/src/glx/glxclient.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxclient.h
|
||||
+++ mesa-24.0.3/src/glx/glxclient.h
|
||||
@@ -85,7 +85,7 @@ struct __GLXDRIdisplayRec
|
||||
*/
|
||||
void (*destroyDisplay) (__GLXDRIdisplay * display);
|
||||
|
||||
- struct glx_screen *(*createScreen)(int screen, struct glx_display * priv);
|
||||
+ struct glx_screen *(*createScreen)(int screen, struct glx_display * priv, bool implicit);
|
||||
};
|
||||
|
||||
struct __GLXDRIscreenRec {
|
||||
Index: mesa-24.0.3/src/glx/glxext.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxext.c
|
||||
+++ mesa-24.0.3/src/glx/glxext.c
|
||||
@@ -783,19 +783,19 @@ AllocAndFetchScreenConfigs(Display * dpy
|
||||
#if defined(GLX_USE_DRM)
|
||||
#if defined(HAVE_DRI3)
|
||||
if (priv->dri3Display)
|
||||
- psc = priv->dri3Display->createScreen(i, priv);
|
||||
+ psc = priv->dri3Display->createScreen(i, priv, false);
|
||||
#endif /* HAVE_DRI3 */
|
||||
if (psc == NULL && priv->dri2Display)
|
||||
- psc = priv->dri2Display->createScreen(i, priv);
|
||||
+ psc = priv->dri2Display->createScreen(i, priv, false);
|
||||
#endif /* GLX_USE_DRM */
|
||||
|
||||
#ifdef GLX_USE_WINDOWSGL
|
||||
if (psc == NULL && priv->windowsdriDisplay)
|
||||
- psc = priv->windowsdriDisplay->createScreen(i, priv);
|
||||
+ psc = priv->windowsdriDisplay->createScreen(i, priv, false);
|
||||
#endif
|
||||
|
||||
if (psc == NULL && priv->driswDisplay)
|
||||
- psc = priv->driswDisplay->createScreen(i, priv);
|
||||
+ psc = priv->driswDisplay->createScreen(i, priv, false);
|
||||
#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
|
||||
|
||||
bool indirect = false;
|
76
0004-glx-pass-implicit-load-param-through-allocation.patch
Normal file
76
0004-glx-pass-implicit-load-param-through-allocation.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From e7c5f94a79ff0e545dfdc95703a541a0d43d739f Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 09:42:06 -0400
|
||||
Subject: [PATCH 4/9] glx: pass implicit load param through allocation
|
||||
|
||||
---
|
||||
src/glx/glxext.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/glx/glxext.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxext.c
|
||||
+++ mesa-24.0.3/src/glx/glxext.c
|
||||
@@ -763,7 +763,7 @@ glx_screen_cleanup(struct glx_screen *ps
|
||||
** If that works then fetch the per screen configs data.
|
||||
*/
|
||||
static Bool
|
||||
-AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv, Bool zink)
|
||||
+AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv, Bool zink, Bool implicit)
|
||||
{
|
||||
struct glx_screen *psc;
|
||||
GLint i, screens;
|
||||
@@ -783,19 +783,19 @@ AllocAndFetchScreenConfigs(Display * dpy
|
||||
#if defined(GLX_USE_DRM)
|
||||
#if defined(HAVE_DRI3)
|
||||
if (priv->dri3Display)
|
||||
- psc = priv->dri3Display->createScreen(i, priv, false);
|
||||
+ psc = priv->dri3Display->createScreen(i, priv, implicit);
|
||||
#endif /* HAVE_DRI3 */
|
||||
if (psc == NULL && priv->dri2Display)
|
||||
- psc = priv->dri2Display->createScreen(i, priv, false);
|
||||
+ psc = priv->dri2Display->createScreen(i, priv, implicit);
|
||||
#endif /* GLX_USE_DRM */
|
||||
|
||||
#ifdef GLX_USE_WINDOWSGL
|
||||
if (psc == NULL && priv->windowsdriDisplay)
|
||||
- psc = priv->windowsdriDisplay->createScreen(i, priv, false);
|
||||
+ psc = priv->windowsdriDisplay->createScreen(i, priv, implicit);
|
||||
#endif
|
||||
|
||||
if (psc == NULL && priv->driswDisplay)
|
||||
- psc = priv->driswDisplay->createScreen(i, priv, false);
|
||||
+ psc = priv->driswDisplay->createScreen(i, priv, psc == GLX_LOADER_USE_ZINK ? false : implicit);
|
||||
#endif /* GLX_DIRECT_RENDERING && !GLX_USE_APPLEGL */
|
||||
|
||||
bool indirect = false;
|
||||
@@ -929,14 +929,14 @@ __glXInitialize(Display * dpy)
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (!AllocAndFetchScreenConfigs(dpy, dpyPriv, zink | try_zink)) {
|
||||
+ if (!AllocAndFetchScreenConfigs(dpy, dpyPriv, zink | try_zink, zink || try_zink ? try_zink : !env)) {
|
||||
Bool fail = True;
|
||||
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
|
||||
if (try_zink) {
|
||||
free(dpyPriv->screens);
|
||||
dpyPriv->driswDisplay->destroyDisplay(dpyPriv->driswDisplay);
|
||||
dpyPriv->driswDisplay = driswCreateDisplay(dpy, false);
|
||||
- fail = !AllocAndFetchScreenConfigs(dpy, dpyPriv, False);
|
||||
+ fail = !AllocAndFetchScreenConfigs(dpy, dpyPriv, False, true);
|
||||
}
|
||||
#endif
|
||||
if (fail) {
|
||||
Index: mesa-24.0.3/src/glx/glxclient.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxclient.h
|
||||
+++ mesa-24.0.3/src/glx/glxclient.h
|
||||
@@ -78,6 +78,8 @@ typedef struct __GLXDRIdisplayRec __GLXD
|
||||
typedef struct __GLXDRIscreenRec __GLXDRIscreen;
|
||||
typedef struct __GLXDRIdrawableRec __GLXDRIdrawable;
|
||||
|
||||
+#define GLX_LOADER_USE_ZINK ((struct glx_screen *)(uintptr_t)-1)
|
||||
+
|
||||
struct __GLXDRIdisplayRec
|
||||
{
|
||||
/**
|
575
0005-dri-plumb-a-implicit-param-through-createNewScreen-i.patch
Normal file
575
0005-dri-plumb-a-implicit-param-through-createNewScreen-i.patch
Normal file
@ -0,0 +1,575 @@
|
||||
From 6b3f6a6e0b1e2cba749f8c38b087a59eee3f4efa Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 10:00:54 -0400
|
||||
Subject: [PATCH 5/9] dri: plumb a 'implicit' param through createNewScreen
|
||||
interfaces
|
||||
|
||||
---
|
||||
include/GL/internal/dri_interface.h | 33 ++++++++++++++++--
|
||||
include/GL/internal/mesa_interface.h | 5 ++-
|
||||
src/egl/drivers/dri2/egl_dri2.c | 20 +++++------
|
||||
src/gallium/frontends/dri/dri2.c | 6 ++--
|
||||
src/gallium/frontends/dri/dri_util.c | 52 ++++++++++++++++++++--------
|
||||
src/gallium/frontends/dri/dri_util.h | 5 +++
|
||||
src/gallium/frontends/dri/drisw.c | 3 +-
|
||||
src/gallium/frontends/dri/kopper.c | 3 +-
|
||||
src/gbm/backends/dri/gbm_dri.c | 16 ++++-----
|
||||
src/glx/dri2_glx.c | 8 ++---
|
||||
src/glx/dri3_glx.c | 12 +++----
|
||||
src/glx/drisw_glx.c | 14 ++++----
|
||||
12 files changed, 120 insertions(+), 57 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/include/GL/internal/dri_interface.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/include/GL/internal/dri_interface.h
|
||||
+++ mesa-24.0.3/include/GL/internal/dri_interface.h
|
||||
@@ -913,7 +913,7 @@ struct __DRIframebufferRec {
|
||||
* extension. Version 1 is required by the X server, and version 3 is used.
|
||||
*/
|
||||
#define __DRI_SWRAST "DRI_SWRast"
|
||||
-#define __DRI_SWRAST_VERSION 4
|
||||
+#define __DRI_SWRAST_VERSION 5
|
||||
|
||||
struct __DRIswrastExtensionRec {
|
||||
__DRIextension base;
|
||||
@@ -961,6 +961,18 @@ struct __DRIswrastExtensionRec {
|
||||
const __DRIconfig ***driver_configs,
|
||||
void *loaderPrivate);
|
||||
|
||||
+ /**
|
||||
+ * createNewScreen() with the driver extensions passed in and implicit load flag.
|
||||
+ *
|
||||
+ * \since version 6
|
||||
+ */
|
||||
+ __DRIscreen *(*createNewScreen3)(int screen,
|
||||
+ const __DRIextension **loader_extensions,
|
||||
+ const __DRIextension **driver_extensions,
|
||||
+ const __DRIconfig ***driver_configs,
|
||||
+ bool implicit,
|
||||
+ void *loaderPrivate);
|
||||
+
|
||||
};
|
||||
|
||||
/** Common DRI function definitions, shared among DRI2 and Image extensions
|
||||
@@ -972,6 +984,13 @@ typedef __DRIscreen *
|
||||
const __DRIextension **driver_extensions,
|
||||
const __DRIconfig ***driver_configs,
|
||||
void *loaderPrivate);
|
||||
+typedef __DRIscreen *
|
||||
+(*__DRIcreateNewScreen3Func)(int screen, int fd,
|
||||
+ const __DRIextension **extensions,
|
||||
+ const __DRIextension **driver_extensions,
|
||||
+ const __DRIconfig ***driver_configs,
|
||||
+ bool implicit,
|
||||
+ void *loaderPrivate);
|
||||
|
||||
typedef __DRIdrawable *
|
||||
(*__DRIcreateNewDrawableFunc)(__DRIscreen *screen,
|
||||
@@ -1107,7 +1126,7 @@ struct __DRIdri2LoaderExtensionRec {
|
||||
* constructors for DRI2. The X server uses up to version 4.
|
||||
*/
|
||||
#define __DRI_DRI2 "DRI_DRI2"
|
||||
-#define __DRI_DRI2_VERSION 4
|
||||
+#define __DRI_DRI2_VERSION 5
|
||||
|
||||
#define __DRI_API_OPENGL 0 /**< OpenGL compatibility profile */
|
||||
#define __DRI_API_GLES 1 /**< OpenGL ES 1.x */
|
||||
@@ -1226,6 +1245,13 @@ struct __DRIdri2ExtensionRec {
|
||||
* \since version 4
|
||||
*/
|
||||
__DRIcreateNewScreen2Func createNewScreen2;
|
||||
+
|
||||
+ /**
|
||||
+ * createNewScreen with the driver's extension list passed in and implicit load flag.
|
||||
+ *
|
||||
+ * \since version 5
|
||||
+ */
|
||||
+ __DRIcreateNewScreen3Func createNewScreen3;
|
||||
};
|
||||
|
||||
|
||||
@@ -2083,7 +2109,7 @@ struct __DRIimageLoaderExtensionRec {
|
||||
*/
|
||||
|
||||
#define __DRI_IMAGE_DRIVER "DRI_IMAGE_DRIVER"
|
||||
-#define __DRI_IMAGE_DRIVER_VERSION 1
|
||||
+#define __DRI_IMAGE_DRIVER_VERSION 2
|
||||
|
||||
struct __DRIimageDriverExtensionRec {
|
||||
__DRIextension base;
|
||||
@@ -2093,6 +2119,7 @@ struct __DRIimageDriverExtensionRec {
|
||||
__DRIcreateNewDrawableFunc createNewDrawable;
|
||||
__DRIcreateContextAttribsFunc createContextAttribs;
|
||||
__DRIgetAPIMaskFunc getAPIMask;
|
||||
+ __DRIcreateNewScreen3Func createNewScreen3;
|
||||
};
|
||||
|
||||
/**
|
||||
Index: mesa-24.0.3/include/GL/internal/mesa_interface.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/include/GL/internal/mesa_interface.h
|
||||
+++ mesa-24.0.3/include/GL/internal/mesa_interface.h
|
||||
@@ -33,7 +33,7 @@
|
||||
typedef struct __DRImesaCoreExtensionRec __DRImesaCoreExtension;
|
||||
|
||||
#define __DRI_MESA "DRI_Mesa"
|
||||
-#define __DRI_MESA_VERSION 1
|
||||
+#define __DRI_MESA_VERSION 2
|
||||
|
||||
struct dri_screen;
|
||||
|
||||
@@ -63,6 +63,9 @@ struct __DRImesaCoreExtensionRec {
|
||||
const __DRIconfig **(*initScreen)(struct dri_screen *screen);
|
||||
|
||||
int (*queryCompatibleRenderOnlyDeviceFd)(int kms_only_fd);
|
||||
+
|
||||
+ /* version 2 */
|
||||
+ __DRIcreateNewScreen3Func createNewScreen3;
|
||||
};
|
||||
|
||||
#endif /* MESA_INTERFACE_H */
|
||||
Index: mesa-24.0.3/src/egl/drivers/dri2/egl_dri2.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/egl/drivers/dri2/egl_dri2.c
|
||||
+++ mesa-24.0.3/src/egl/drivers/dri2/egl_dri2.c
|
||||
@@ -701,8 +701,8 @@ const __DRIimageLookupExtension image_lo
|
||||
|
||||
static const struct dri_extension_match dri3_driver_extensions[] = {
|
||||
{__DRI_CORE, 1, offsetof(struct dri2_egl_display, core), false},
|
||||
- {__DRI_MESA, 1, offsetof(struct dri2_egl_display, mesa), false},
|
||||
- {__DRI_IMAGE_DRIVER, 1, offsetof(struct dri2_egl_display, image_driver),
|
||||
+ {__DRI_MESA, 2, offsetof(struct dri2_egl_display, mesa), false},
|
||||
+ {__DRI_IMAGE_DRIVER, 2, offsetof(struct dri2_egl_display, image_driver),
|
||||
false},
|
||||
{__DRI_CONFIG_OPTIONS, 2, offsetof(struct dri2_egl_display, configOptions),
|
||||
true},
|
||||
@@ -710,8 +710,8 @@ static const struct dri_extension_match
|
||||
|
||||
static const struct dri_extension_match dri2_driver_extensions[] = {
|
||||
{__DRI_CORE, 1, offsetof(struct dri2_egl_display, core), false},
|
||||
- {__DRI_MESA, 1, offsetof(struct dri2_egl_display, mesa), false},
|
||||
- {__DRI_DRI2, 4, offsetof(struct dri2_egl_display, dri2), false},
|
||||
+ {__DRI_MESA, 2, offsetof(struct dri2_egl_display, mesa), false},
|
||||
+ {__DRI_DRI2, 5, offsetof(struct dri2_egl_display, dri2), false},
|
||||
{__DRI_CONFIG_OPTIONS, 2, offsetof(struct dri2_egl_display, configOptions),
|
||||
true},
|
||||
};
|
||||
@@ -724,8 +724,8 @@ static const struct dri_extension_match
|
||||
|
||||
static const struct dri_extension_match swrast_driver_extensions[] = {
|
||||
{__DRI_CORE, 1, offsetof(struct dri2_egl_display, core), false},
|
||||
- {__DRI_MESA, 1, offsetof(struct dri2_egl_display, mesa), false},
|
||||
- {__DRI_SWRAST, 4, offsetof(struct dri2_egl_display, swrast), false},
|
||||
+ {__DRI_MESA, 2, offsetof(struct dri2_egl_display, mesa), false},
|
||||
+ {__DRI_SWRAST, 5, offsetof(struct dri2_egl_display, swrast), false},
|
||||
{__DRI_CONFIG_OPTIONS, 2, offsetof(struct dri2_egl_display, configOptions),
|
||||
true},
|
||||
};
|
||||
@@ -1013,18 +1013,18 @@ dri2_create_screen(_EGLDisplay *disp)
|
||||
* will not crash.
|
||||
*/
|
||||
if (strcmp(dri2_dpy->driver_name, driver_name_display_gpu) == 0) {
|
||||
- dri2_dpy->dri_screen_display_gpu = dri2_dpy->mesa->createNewScreen(
|
||||
+ dri2_dpy->dri_screen_display_gpu = dri2_dpy->mesa->createNewScreen3(
|
||||
0, dri2_dpy->fd_display_gpu, dri2_dpy->loader_extensions,
|
||||
- dri2_dpy->driver_extensions, &dri2_dpy->driver_configs, disp);
|
||||
+ dri2_dpy->driver_extensions, &dri2_dpy->driver_configs, false, disp);
|
||||
}
|
||||
free(driver_name_display_gpu);
|
||||
}
|
||||
}
|
||||
|
||||
int screen_fd = dri2_dpy->swrast ? -1 : dri2_dpy->fd_render_gpu;
|
||||
- dri2_dpy->dri_screen_render_gpu = dri2_dpy->mesa->createNewScreen(
|
||||
+ dri2_dpy->dri_screen_render_gpu = dri2_dpy->mesa->createNewScreen3(
|
||||
0, screen_fd, dri2_dpy->loader_extensions, dri2_dpy->driver_extensions,
|
||||
- &dri2_dpy->driver_configs, disp);
|
||||
+ &dri2_dpy->driver_configs, false, disp);
|
||||
|
||||
if (dri2_dpy->dri_screen_render_gpu == NULL) {
|
||||
_eglLog(_EGL_WARNING, "egl: failed to create dri2 screen");
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri2.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
@@ -2484,12 +2484,13 @@ dri_query_compatible_render_only_device_
|
||||
}
|
||||
|
||||
static const struct __DRImesaCoreExtensionRec mesaCoreExtension = {
|
||||
- .base = { __DRI_MESA, 1 },
|
||||
+ .base = { __DRI_MESA, 2 },
|
||||
.version_string = MESA_INTERFACE_VERSION_STRING,
|
||||
.createNewScreen = driCreateNewScreen2,
|
||||
.createContext = driCreateContextAttribs,
|
||||
.initScreen = dri2_init_screen,
|
||||
.queryCompatibleRenderOnlyDeviceFd = dri_query_compatible_render_only_device_fd,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
/* This is the table of extensions that the loader will dlsym() for. */
|
||||
@@ -2503,11 +2504,12 @@ const __DRIextension *galliumdrm_driver_
|
||||
};
|
||||
|
||||
static const struct __DRImesaCoreExtensionRec swkmsMesaCoreExtension = {
|
||||
- .base = { __DRI_MESA, 1 },
|
||||
+ .base = { __DRI_MESA, 2 },
|
||||
.version_string = MESA_INTERFACE_VERSION_STRING,
|
||||
.createNewScreen = driCreateNewScreen2,
|
||||
.createContext = driCreateContextAttribs,
|
||||
.initScreen = dri_swrast_kms_init_screen,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
const __DRIextension *dri_swrast_kms_driver_extensions[] = {
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri_util.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri_util.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri_util.c
|
||||
@@ -96,10 +96,10 @@ setupLoaderExtensions(struct dri_screen
|
||||
* Display.
|
||||
*/
|
||||
__DRIscreen *
|
||||
-driCreateNewScreen2(int scrn, int fd,
|
||||
+driCreateNewScreen3(int scrn, int fd,
|
||||
const __DRIextension **loader_extensions,
|
||||
const __DRIextension **driver_extensions,
|
||||
- const __DRIconfig ***driver_configs, void *data)
|
||||
+ const __DRIconfig ***driver_configs, bool implicit, void *data)
|
||||
{
|
||||
static const __DRIextension *emptyExtensionList[] = { NULL };
|
||||
struct dri_screen *screen;
|
||||
@@ -172,14 +172,25 @@ driCreateNewScreen2(int scrn, int fd,
|
||||
return opaque_dri_screen(screen);
|
||||
}
|
||||
|
||||
+__DRIscreen *
|
||||
+driCreateNewScreen2(int scrn, int fd,
|
||||
+ const __DRIextension **loader_extensions,
|
||||
+ const __DRIextension **driver_extensions,
|
||||
+ const __DRIconfig ***driver_configs, void *data)
|
||||
+{
|
||||
+ return driCreateNewScreen3(scrn, fd, loader_extensions,
|
||||
+ driver_extensions,
|
||||
+ driver_configs, false, data);
|
||||
+}
|
||||
+
|
||||
static __DRIscreen *
|
||||
dri2CreateNewScreen(int scrn, int fd,
|
||||
const __DRIextension **extensions,
|
||||
const __DRIconfig ***driver_configs, void *data)
|
||||
{
|
||||
- return driCreateNewScreen2(scrn, fd, extensions,
|
||||
+ return driCreateNewScreen3(scrn, fd, extensions,
|
||||
galliumdrm_driver_extensions,
|
||||
- driver_configs, data);
|
||||
+ driver_configs, false, data);
|
||||
}
|
||||
|
||||
static __DRIscreen *
|
||||
@@ -187,9 +198,9 @@ swkmsCreateNewScreen(int scrn, int fd,
|
||||
const __DRIextension **extensions,
|
||||
const __DRIconfig ***driver_configs, void *data)
|
||||
{
|
||||
- return driCreateNewScreen2(scrn, fd, extensions,
|
||||
+ return driCreateNewScreen3(scrn, fd, extensions,
|
||||
dri_swrast_kms_driver_extensions,
|
||||
- driver_configs, data);
|
||||
+ driver_configs, false, data);
|
||||
}
|
||||
|
||||
/** swrast driver createNewScreen entrypoint. */
|
||||
@@ -197,9 +208,9 @@ static __DRIscreen *
|
||||
driSWRastCreateNewScreen(int scrn, const __DRIextension **extensions,
|
||||
const __DRIconfig ***driver_configs, void *data)
|
||||
{
|
||||
- return driCreateNewScreen2(scrn, -1, extensions,
|
||||
+ return driCreateNewScreen3(scrn, -1, extensions,
|
||||
galliumsw_driver_extensions,
|
||||
- driver_configs, data);
|
||||
+ driver_configs, false, data);
|
||||
}
|
||||
|
||||
static __DRIscreen *
|
||||
@@ -207,8 +218,17 @@ driSWRastCreateNewScreen2(int scrn, cons
|
||||
const __DRIextension **driver_extensions,
|
||||
const __DRIconfig ***driver_configs, void *data)
|
||||
{
|
||||
- return driCreateNewScreen2(scrn, -1, extensions, driver_extensions,
|
||||
- driver_configs, data);
|
||||
+ return driCreateNewScreen3(scrn, -1, extensions, driver_extensions,
|
||||
+ driver_configs, false, data);
|
||||
+}
|
||||
+
|
||||
+static __DRIscreen *
|
||||
+driSWRastCreateNewScreen3(int scrn, const __DRIextension **extensions,
|
||||
+ const __DRIextension **driver_extensions,
|
||||
+ const __DRIconfig ***driver_configs, bool implicit, void *data)
|
||||
+{
|
||||
+ return driCreateNewScreen3(scrn, -1, extensions, driver_extensions,
|
||||
+ driver_configs, implicit, data);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -878,7 +898,7 @@ const __DRIcoreExtension driCoreExtensio
|
||||
|
||||
/** DRI2 interface */
|
||||
const __DRIdri2Extension driDRI2Extension = {
|
||||
- .base = { __DRI_DRI2, 4 },
|
||||
+ .base = { __DRI_DRI2, 5 },
|
||||
|
||||
.createNewScreen = dri2CreateNewScreen,
|
||||
.createNewDrawable = driCreateNewDrawable,
|
||||
@@ -889,10 +909,11 @@ const __DRIdri2Extension driDRI2Extensio
|
||||
.releaseBuffer = dri2ReleaseBuffer,
|
||||
.createContextAttribs = driCreateContextAttribs,
|
||||
.createNewScreen2 = driCreateNewScreen2,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
const __DRIdri2Extension swkmsDRI2Extension = {
|
||||
- .base = { __DRI_DRI2, 4 },
|
||||
+ .base = { __DRI_DRI2, 5 },
|
||||
|
||||
.createNewScreen = swkmsCreateNewScreen,
|
||||
.createNewDrawable = driCreateNewDrawable,
|
||||
@@ -903,18 +924,20 @@ const __DRIdri2Extension swkmsDRI2Extens
|
||||
.releaseBuffer = dri2ReleaseBuffer,
|
||||
.createContextAttribs = driCreateContextAttribs,
|
||||
.createNewScreen2 = driCreateNewScreen2,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
const __DRIswrastExtension driSWRastExtension = {
|
||||
- .base = { __DRI_SWRAST, 4 },
|
||||
+ .base = { __DRI_SWRAST, 5 },
|
||||
|
||||
.createNewScreen = driSWRastCreateNewScreen,
|
||||
.createNewDrawable = driCreateNewDrawable,
|
||||
.createNewContextForAPI = driCreateNewContextForAPI,
|
||||
.createContextAttribs = driCreateContextAttribs,
|
||||
.createNewScreen2 = driSWRastCreateNewScreen2,
|
||||
+ .createNewScreen3 = driSWRastCreateNewScreen3,
|
||||
};
|
||||
|
||||
const __DRI2configQueryExtension dri2ConfigQueryExtension = {
|
||||
@@ -1117,10 +1140,11 @@ driImageFormatToGLFormat(uint32_t image_
|
||||
|
||||
/** Image driver interface */
|
||||
const __DRIimageDriverExtension driImageDriverExtension = {
|
||||
- .base = { __DRI_IMAGE_DRIVER, 1 },
|
||||
+ .base = { __DRI_IMAGE_DRIVER, 2 },
|
||||
|
||||
.createNewScreen2 = driCreateNewScreen2,
|
||||
.createNewDrawable = driCreateNewDrawable,
|
||||
.getAPIMask = driGetAPIMask,
|
||||
.createContextAttribs = driCreateContextAttribs,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri_util.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri_util.h
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri_util.h
|
||||
@@ -104,6 +104,11 @@ struct __DriverContextConfig {
|
||||
#define __DRIVER_CONTEXT_ATTRIB_PROTECTED (1 << 4)
|
||||
|
||||
__DRIscreen *
|
||||
+driCreateNewScreen3(int scrn, int fd,
|
||||
+ const __DRIextension **loader_extensions,
|
||||
+ const __DRIextension **driver_extensions,
|
||||
+ const __DRIconfig ***driver_configs, bool implicit, void *data);
|
||||
+__DRIscreen *
|
||||
driCreateNewScreen2(int scrn, int fd,
|
||||
const __DRIextension **loader_extensions,
|
||||
const __DRIextension **driver_extensions,
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/drisw.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
@@ -616,11 +616,12 @@ const __DRIcopySubBufferExtension driSWC
|
||||
};
|
||||
|
||||
static const struct __DRImesaCoreExtensionRec mesaCoreExtension = {
|
||||
- .base = { __DRI_MESA, 1 },
|
||||
+ .base = { __DRI_MESA, 2 },
|
||||
.version_string = MESA_INTERFACE_VERSION_STRING,
|
||||
.createNewScreen = driCreateNewScreen2,
|
||||
.createContext = driCreateContextAttribs,
|
||||
.initScreen = drisw_init_screen,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
/* This is the table of extensions that the loader will dlsym() for. */
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/kopper.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
@@ -963,11 +963,12 @@ const __DRIkopperExtension driKopperExte
|
||||
};
|
||||
|
||||
static const struct __DRImesaCoreExtensionRec mesaCoreExtension = {
|
||||
- .base = { __DRI_MESA, 1 },
|
||||
+ .base = { __DRI_MESA, 2 },
|
||||
.version_string = MESA_INTERFACE_VERSION_STRING,
|
||||
.createNewScreen = driCreateNewScreen2,
|
||||
.createContext = driCreateContextAttribs,
|
||||
.initScreen = kopper_init_screen,
|
||||
+ .createNewScreen3 = driCreateNewScreen3,
|
||||
};
|
||||
|
||||
const __DRIextension *galliumvk_driver_extensions[] = {
|
||||
Index: mesa-24.0.3/src/gbm/backends/dri/gbm_dri.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gbm/backends/dri/gbm_dri.c
|
||||
+++ mesa-24.0.3/src/gbm/backends/dri/gbm_dri.c
|
||||
@@ -250,14 +250,14 @@ static struct dri_extension_match dri_co
|
||||
|
||||
static struct dri_extension_match gbm_dri_device_extensions[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct gbm_dri_device, core), false },
|
||||
- { __DRI_MESA, 1, offsetof(struct gbm_dri_device, mesa), false },
|
||||
- { __DRI_IMAGE_DRIVER, 1, offsetof(struct gbm_dri_device, image_driver), false },
|
||||
+ { __DRI_MESA, 2, offsetof(struct gbm_dri_device, mesa), false },
|
||||
+ { __DRI_IMAGE_DRIVER, 2, offsetof(struct gbm_dri_device, image_driver), false },
|
||||
};
|
||||
|
||||
static struct dri_extension_match gbm_swrast_device_extensions[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct gbm_dri_device, core), false },
|
||||
- { __DRI_MESA, 1, offsetof(struct gbm_dri_device, mesa), false },
|
||||
- { __DRI_SWRAST, 4, offsetof(struct gbm_dri_device, swrast), false },
|
||||
+ { __DRI_MESA, 2, offsetof(struct gbm_dri_device, mesa), false },
|
||||
+ { __DRI_SWRAST, 5, offsetof(struct gbm_dri_device, swrast), false },
|
||||
{ __DRI_KOPPER, 1, offsetof(struct gbm_dri_device, kopper), true },
|
||||
};
|
||||
|
||||
@@ -315,10 +315,10 @@ dri_screen_create_for_driver(struct gbm_
|
||||
|
||||
dri->driver_extensions = extensions;
|
||||
dri->loader_extensions = gbm_dri_screen_extensions;
|
||||
- dri->screen = dri->mesa->createNewScreen(0, swrast ? -1 : dri->base.v0.fd,
|
||||
- dri->loader_extensions,
|
||||
- dri->driver_extensions,
|
||||
- &dri->driver_configs, dri);
|
||||
+ dri->screen = dri->mesa->createNewScreen3(0, swrast ? -1 : dri->base.v0.fd,
|
||||
+ dri->loader_extensions,
|
||||
+ dri->driver_extensions,
|
||||
+ &dri->driver_configs, false, dri);
|
||||
if (dri->screen == NULL)
|
||||
goto close_driver;
|
||||
|
||||
Index: mesa-24.0.3/src/glx/dri2_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/dri2_glx.c
|
||||
+++ mesa-24.0.3/src/glx/dri2_glx.c
|
||||
@@ -1064,17 +1064,17 @@ dri2CreateScreen(int screen, struct glx_
|
||||
|
||||
static const struct dri_extension_match exts[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct dri2_screen, core), false },
|
||||
- { __DRI_DRI2, 4, offsetof(struct dri2_screen, dri2), false },
|
||||
- { __DRI_MESA, 1, offsetof(struct dri2_screen, mesa), false },
|
||||
+ { __DRI_DRI2, 5, offsetof(struct dri2_screen, dri2), false },
|
||||
+ { __DRI_MESA, 2, offsetof(struct dri2_screen, mesa), false },
|
||||
};
|
||||
if (!loader_bind_extensions(psc, exts, ARRAY_SIZE(exts), extensions))
|
||||
goto handle_error;
|
||||
|
||||
psc->driScreen =
|
||||
- psc->dri2->createNewScreen2(screen, psc->fd,
|
||||
+ psc->dri2->createNewScreen3(screen, psc->fd,
|
||||
(const __DRIextension **)&pdp->loader_extensions[0],
|
||||
extensions,
|
||||
- &driver_configs, psc);
|
||||
+ &driver_configs, implicit, psc);
|
||||
|
||||
if (psc->driScreen == NULL) {
|
||||
ErrorMessageF("glx: failed to create dri2 screen\n");
|
||||
Index: mesa-24.0.3/src/glx/dri3_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/dri3_glx.c
|
||||
+++ mesa-24.0.3/src/glx/dri3_glx.c
|
||||
@@ -841,8 +841,8 @@ dri3_create_screen(int screen, struct gl
|
||||
|
||||
static const struct dri_extension_match exts[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct dri3_screen, core), false },
|
||||
- { __DRI_IMAGE_DRIVER, 1, offsetof(struct dri3_screen, image_driver), false },
|
||||
- { __DRI_MESA, 1, offsetof(struct dri3_screen, mesa), false },
|
||||
+ { __DRI_IMAGE_DRIVER, 2, offsetof(struct dri3_screen, image_driver), false },
|
||||
+ { __DRI_MESA, 2, offsetof(struct dri3_screen, mesa), false },
|
||||
};
|
||||
if (!loader_bind_extensions(psc, exts, ARRAY_SIZE(exts), extensions))
|
||||
goto handle_error;
|
||||
@@ -858,10 +858,10 @@ dri3_create_screen(int screen, struct gl
|
||||
*/
|
||||
if (strcmp(driverName, driverNameDisplayGPU) == 0) {
|
||||
psc->driScreenDisplayGPU =
|
||||
- psc->image_driver->createNewScreen2(screen, psc->fd_display_gpu,
|
||||
+ psc->image_driver->createNewScreen3(screen, psc->fd_display_gpu,
|
||||
pdp->loader_extensions,
|
||||
extensions,
|
||||
- &driver_configs, psc);
|
||||
+ &driver_configs, implicit, psc);
|
||||
}
|
||||
|
||||
free(driverNameDisplayGPU);
|
||||
@@ -869,10 +869,10 @@ dri3_create_screen(int screen, struct gl
|
||||
}
|
||||
|
||||
psc->driScreenRenderGPU =
|
||||
- psc->image_driver->createNewScreen2(screen, psc->fd_render_gpu,
|
||||
+ psc->image_driver->createNewScreen3(screen, psc->fd_render_gpu,
|
||||
pdp->loader_extensions,
|
||||
extensions,
|
||||
- &driver_configs, psc);
|
||||
+ &driver_configs, implicit, psc);
|
||||
|
||||
if (psc->driScreenRenderGPU == NULL) {
|
||||
ErrorMessageF("glx: failed to create dri3 screen\n");
|
||||
Index: mesa-24.0.3/src/glx/drisw_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/drisw_glx.c
|
||||
+++ mesa-24.0.3/src/glx/drisw_glx.c
|
||||
@@ -934,7 +934,7 @@ kopperGetSwapInterval(__GLXDRIdrawable *
|
||||
|
||||
static struct glx_screen *
|
||||
driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
- const char *driver)
|
||||
+ const char *driver, bool implicit)
|
||||
{
|
||||
__GLXDRIscreen *psp;
|
||||
const __DRIconfig **driver_configs;
|
||||
@@ -967,18 +967,18 @@ driswCreateScreenDriver(int screen, stru
|
||||
|
||||
static const struct dri_extension_match exts[] = {
|
||||
{ __DRI_CORE, 1, offsetof(struct drisw_screen, core), false },
|
||||
- { __DRI_SWRAST, 4, offsetof(struct drisw_screen, swrast), false },
|
||||
+ { __DRI_SWRAST, 5, offsetof(struct drisw_screen, swrast), false },
|
||||
{ __DRI_KOPPER, 1, offsetof(struct drisw_screen, kopper), true },
|
||||
{ __DRI_COPY_SUB_BUFFER, 1, offsetof(struct drisw_screen, copySubBuffer), true },
|
||||
- { __DRI_MESA, 1, offsetof(struct drisw_screen, mesa), false },
|
||||
+ { __DRI_MESA, 2, offsetof(struct drisw_screen, mesa), false },
|
||||
};
|
||||
if (!loader_bind_extensions(psc, exts, ARRAY_SIZE(exts), extensions))
|
||||
goto handle_error;
|
||||
|
||||
psc->driScreen =
|
||||
- psc->swrast->createNewScreen2(screen, loader_extensions_local,
|
||||
+ psc->swrast->createNewScreen3(screen, loader_extensions_local,
|
||||
extensions,
|
||||
- &driver_configs, psc);
|
||||
+ &driver_configs, implicit, psc);
|
||||
if (psc->driScreen == NULL) {
|
||||
ErrorMessageF("glx: failed to create drisw screen\n");
|
||||
goto handle_error;
|
||||
@@ -1059,10 +1059,10 @@ driswCreateScreen(int screen, struct glx
|
||||
{
|
||||
const struct drisw_display *pdpyp = (struct drisw_display *)priv->driswDisplay;
|
||||
if (pdpyp->zink && !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false)) {
|
||||
- return driswCreateScreenDriver(screen, priv, "zink");
|
||||
+ return driswCreateScreenDriver(screen, priv, "zink", implicit);
|
||||
}
|
||||
|
||||
- return driswCreateScreenDriver(screen, priv, "swrast");
|
||||
+ return driswCreateScreenDriver(screen, priv, "swrast", implicit);
|
||||
}
|
||||
|
||||
/* Called from __glXFreeDisplayPrivate.
|
@ -0,0 +1,82 @@
|
||||
From 664e73e7120fbf5ad62da643a7e4aff525d38d94 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 10:01:29 -0400
|
||||
Subject: [PATCH 6/9] gbm: plumb an 'implicit' param through device creation
|
||||
|
||||
this is always true except in the software fallback
|
||||
---
|
||||
src/gbm/backends/dri/gbm_dri.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/gbm/backends/dri/gbm_dri.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gbm/backends/dri/gbm_dri.c
|
||||
+++ mesa-24.0.3/src/gbm/backends/dri/gbm_dri.c
|
||||
@@ -287,7 +287,7 @@ dri_open_driver(struct gbm_dri_device *d
|
||||
}
|
||||
|
||||
static int
|
||||
-dri_screen_create_for_driver(struct gbm_dri_device *dri, char *driver_name)
|
||||
+dri_screen_create_for_driver(struct gbm_dri_device *dri, char *driver_name, bool implicit)
|
||||
{
|
||||
bool swrast = driver_name == NULL; /* If it's pure swrast, not just swkms. */
|
||||
|
||||
@@ -318,7 +318,7 @@ dri_screen_create_for_driver(struct gbm_
|
||||
dri->screen = dri->mesa->createNewScreen3(0, swrast ? -1 : dri->base.v0.fd,
|
||||
dri->loader_extensions,
|
||||
dri->driver_extensions,
|
||||
- &dri->driver_configs, false, dri);
|
||||
+ &dri->driver_configs, implicit, dri);
|
||||
if (dri->screen == NULL)
|
||||
goto close_driver;
|
||||
|
||||
@@ -348,7 +348,7 @@ fail:
|
||||
}
|
||||
|
||||
static int
|
||||
-dri_screen_create(struct gbm_dri_device *dri)
|
||||
+dri_screen_create(struct gbm_dri_device *dri, bool implicit)
|
||||
{
|
||||
char *driver_name;
|
||||
|
||||
@@ -356,11 +356,11 @@ dri_screen_create(struct gbm_dri_device
|
||||
if (!driver_name)
|
||||
return -1;
|
||||
|
||||
- return dri_screen_create_for_driver(dri, driver_name);
|
||||
+ return dri_screen_create_for_driver(dri, driver_name, implicit);
|
||||
}
|
||||
|
||||
static int
|
||||
-dri_screen_create_sw(struct gbm_dri_device *dri)
|
||||
+dri_screen_create_sw(struct gbm_dri_device *dri, bool implicit)
|
||||
{
|
||||
char *driver_name;
|
||||
int ret;
|
||||
@@ -369,9 +369,9 @@ dri_screen_create_sw(struct gbm_dri_devi
|
||||
if (!driver_name)
|
||||
return -errno;
|
||||
|
||||
- ret = dri_screen_create_for_driver(dri, driver_name);
|
||||
+ ret = dri_screen_create_for_driver(dri, driver_name, implicit);
|
||||
if (ret != 0)
|
||||
- ret = dri_screen_create_for_driver(dri, NULL);
|
||||
+ ret = dri_screen_create_for_driver(dri, NULL, implicit);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
@@ -1289,11 +1289,11 @@ dri_device_create(int fd, uint32_t gbm_b
|
||||
|
||||
force_sw = debug_get_bool_option("GBM_ALWAYS_SOFTWARE", false);
|
||||
if (!force_sw) {
|
||||
- ret = dri_screen_create(dri);
|
||||
+ ret = dri_screen_create(dri, false);
|
||||
if (ret)
|
||||
- ret = dri_screen_create_sw(dri);
|
||||
+ ret = dri_screen_create_sw(dri, true);
|
||||
} else {
|
||||
- ret = dri_screen_create_sw(dri);
|
||||
+ ret = dri_screen_create_sw(dri, false);
|
||||
}
|
||||
|
||||
if (ret)
|
@ -0,0 +1,88 @@
|
||||
From 55236ac5349f1208356e713336276c052384e444 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 10:05:49 -0400
|
||||
Subject: [PATCH 7/9] frontends/dri: plumb an 'implicit' param through screen
|
||||
init
|
||||
|
||||
---
|
||||
include/GL/internal/mesa_interface.h | 2 +-
|
||||
src/gallium/frontends/dri/dri2.c | 4 ++--
|
||||
src/gallium/frontends/dri/dri_util.c | 2 +-
|
||||
src/gallium/frontends/dri/drisw.c | 2 +-
|
||||
src/gallium/frontends/dri/kopper.c | 2 +-
|
||||
5 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/include/GL/internal/mesa_interface.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/include/GL/internal/mesa_interface.h
|
||||
+++ mesa-24.0.3/include/GL/internal/mesa_interface.h
|
||||
@@ -60,7 +60,7 @@ struct __DRImesaCoreExtensionRec {
|
||||
__DRIcreateContextAttribsFunc createContext;
|
||||
|
||||
/* driver function for finishing initialization inside createNewScreen(). */
|
||||
- const __DRIconfig **(*initScreen)(struct dri_screen *screen);
|
||||
+ const __DRIconfig **(*initScreen)(struct dri_screen *screen, bool implicit);
|
||||
|
||||
int (*queryCompatibleRenderOnlyDeviceFd)(int kms_only_fd);
|
||||
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri2.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
@@ -2374,7 +2374,7 @@ dri2_create_drawable(struct dri_screen *
|
||||
* Returns the struct gl_config supported by this driver.
|
||||
*/
|
||||
static const __DRIconfig **
|
||||
-dri2_init_screen(struct dri_screen *screen)
|
||||
+dri2_init_screen(struct dri_screen *screen, bool implicit)
|
||||
{
|
||||
const __DRIconfig **configs;
|
||||
struct pipe_screen *pscreen = NULL;
|
||||
@@ -2430,7 +2430,7 @@ fail:
|
||||
* Returns the struct gl_config supported by this driver.
|
||||
*/
|
||||
static const __DRIconfig **
|
||||
-dri_swrast_kms_init_screen(struct dri_screen *screen)
|
||||
+dri_swrast_kms_init_screen(struct dri_screen *screen, bool implicit)
|
||||
{
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
const __DRIconfig **configs;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri_util.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri_util.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri_util.c
|
||||
@@ -136,7 +136,7 @@ driCreateNewScreen3(int scrn, int fd,
|
||||
driParseConfigFiles(&screen->optionCache, &screen->optionInfo, screen->myNum,
|
||||
"dri2", NULL, NULL, NULL, 0, NULL, 0);
|
||||
|
||||
- *driver_configs = mesa->initScreen(screen);
|
||||
+ *driver_configs = mesa->initScreen(screen, implicit);
|
||||
if (*driver_configs == NULL) {
|
||||
dri_destroy_screen(screen);
|
||||
return NULL;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/drisw.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
@@ -539,7 +539,7 @@ drisw_create_drawable(struct dri_screen
|
||||
}
|
||||
|
||||
static const __DRIconfig **
|
||||
-drisw_init_screen(struct dri_screen *screen)
|
||||
+drisw_init_screen(struct dri_screen *screen, bool implicit)
|
||||
{
|
||||
const __DRIswrastLoaderExtension *loader = screen->swrast_loader;
|
||||
const __DRIconfig **configs;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/kopper.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
@@ -110,7 +110,7 @@ static const __DRIextension *drivk_sw_sc
|
||||
};
|
||||
|
||||
static const __DRIconfig **
|
||||
-kopper_init_screen(struct dri_screen *screen)
|
||||
+kopper_init_screen(struct dri_screen *screen, bool implicit)
|
||||
{
|
||||
const __DRIconfig **configs;
|
||||
struct pipe_screen *pscreen = NULL;
|
281
0008-pipe-loader-plumb-a-flag-for-implicit-driver-load-th.patch
Normal file
281
0008-pipe-loader-plumb-a-flag-for-implicit-driver-load-th.patch
Normal file
@ -0,0 +1,281 @@
|
||||
From 4df36439ecff5a2b65e93ab36d1ebea780269b63 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 10:13:40 -0400
|
||||
Subject: [PATCH 8/9] pipe-loader: plumb a flag for implicit driver load
|
||||
through screen creation
|
||||
|
||||
---
|
||||
src/gallium/auxiliary/pipe-loader/pipe_loader.c | 7 ++++---
|
||||
src/gallium/auxiliary/pipe-loader/pipe_loader.h | 6 ++++--
|
||||
src/gallium/auxiliary/vl/vl_winsys_dri.c | 2 +-
|
||||
src/gallium/auxiliary/vl/vl_winsys_dri3.c | 2 +-
|
||||
src/gallium/auxiliary/vl/vl_winsys_drm.c | 2 +-
|
||||
src/gallium/frontends/clover/core/device.cpp | 2 +-
|
||||
src/gallium/frontends/dri/dri2.c | 4 ++--
|
||||
src/gallium/frontends/dri/drisw.c | 2 +-
|
||||
src/gallium/frontends/dri/kopper.c | 2 +-
|
||||
src/gallium/frontends/lavapipe/lvp_device.c | 2 +-
|
||||
src/gallium/frontends/rusticl/mesa/pipe/device.rs | 2 +-
|
||||
src/gallium/frontends/teflon/tfl_device.c | 2 +-
|
||||
src/gallium/frontends/xa/xa_tracker.c | 2 +-
|
||||
src/gallium/include/pipe/p_screen.h | 1 +
|
||||
src/gallium/targets/d3dadapter9/drm.c | 4 ++--
|
||||
src/gallium/tests/trivial/quad-tex.c | 2 +-
|
||||
src/gallium/tests/trivial/tri.c | 2 +-
|
||||
17 files changed, 25 insertions(+), 21 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/pipe-loader/pipe_loader.c
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.c
|
||||
@@ -169,11 +169,12 @@ pipe_loader_get_driinfo_xml(const char *
|
||||
}
|
||||
|
||||
struct pipe_screen *
|
||||
-pipe_loader_create_screen_vk(struct pipe_loader_device *dev, bool sw_vk)
|
||||
+pipe_loader_create_screen_vk(struct pipe_loader_device *dev, bool sw_vk, bool implicit)
|
||||
{
|
||||
struct pipe_screen_config config;
|
||||
|
||||
pipe_loader_load_options(dev);
|
||||
+ config.implicit_driver_load = implicit;
|
||||
config.options_info = &dev->option_info;
|
||||
config.options = &dev->option_cache;
|
||||
|
||||
@@ -181,9 +182,9 @@ pipe_loader_create_screen_vk(struct pipe
|
||||
}
|
||||
|
||||
struct pipe_screen *
|
||||
-pipe_loader_create_screen(struct pipe_loader_device *dev)
|
||||
+pipe_loader_create_screen(struct pipe_loader_device *dev, bool implicit)
|
||||
{
|
||||
- return pipe_loader_create_screen_vk(dev, false);
|
||||
+ return pipe_loader_create_screen_vk(dev, false, implicit);
|
||||
}
|
||||
|
||||
struct util_dl_library *
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/pipe-loader/pipe_loader.h
|
||||
@@ -88,17 +88,19 @@ pipe_loader_probe(struct pipe_loader_dev
|
||||
*
|
||||
* \param dev Device the screen will be created for.
|
||||
* \param sw_vk Device is for software vulkan
|
||||
+ * \param implicit Whether the driver is being loaded implicitly.
|
||||
*/
|
||||
struct pipe_screen *
|
||||
-pipe_loader_create_screen_vk(struct pipe_loader_device *dev, bool sw_vk);
|
||||
+pipe_loader_create_screen_vk(struct pipe_loader_device *dev, bool sw_vk, bool implicit);
|
||||
|
||||
/**
|
||||
* Create a pipe_screen for the specified device.
|
||||
*
|
||||
* \param dev Device the screen will be created for.
|
||||
+ * \param implicit Whether the driver is being loaded implicitly.
|
||||
*/
|
||||
struct pipe_screen *
|
||||
-pipe_loader_create_screen(struct pipe_loader_device *dev);
|
||||
+pipe_loader_create_screen(struct pipe_loader_device *dev, bool implicit);
|
||||
|
||||
/**
|
||||
* Ensures that the driconf option cache has been parsed for the driver.
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_dri.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/vl/vl_winsys_dri.c
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_dri.c
|
||||
@@ -459,7 +459,7 @@ vl_dri2_screen_create(Display *display,
|
||||
goto free_authenticate;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&scrn->base.dev, fd, false))
|
||||
- scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev);
|
||||
+ scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, false);
|
||||
|
||||
if (!scrn->base.pscreen)
|
||||
goto release_pipe;
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_dri3.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/vl/vl_winsys_dri3.c
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_dri3.c
|
||||
@@ -843,7 +843,7 @@ vl_dri3_screen_create(Display *display,
|
||||
free(geom_reply);
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&scrn->base.dev, fd, false))
|
||||
- scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev);
|
||||
+ scrn->base.pscreen = pipe_loader_create_screen(scrn->base.dev, false);
|
||||
|
||||
if (!scrn->base.pscreen)
|
||||
goto release_pipe;
|
||||
Index: mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_drm.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/auxiliary/vl/vl_winsys_drm.c
|
||||
+++ mesa-24.0.3/src/gallium/auxiliary/vl/vl_winsys_drm.c
|
||||
@@ -47,7 +47,7 @@ vl_drm_screen_create(int fd)
|
||||
return NULL;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&vscreen->dev, fd, false))
|
||||
- vscreen->pscreen = pipe_loader_create_screen(vscreen->dev);
|
||||
+ vscreen->pscreen = pipe_loader_create_screen(vscreen->dev, false);
|
||||
|
||||
if (!vscreen->pscreen)
|
||||
goto release_pipe;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/clover/core/device.cpp
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/clover/core/device.cpp
|
||||
+++ mesa-24.0.3/src/gallium/frontends/clover/core/device.cpp
|
||||
@@ -163,7 +163,7 @@ namespace {
|
||||
|
||||
device::device(clover::platform &platform, pipe_loader_device *ldev) :
|
||||
platform(platform), clc_cache(NULL), ldev(ldev) {
|
||||
- pipe = pipe_loader_create_screen(ldev);
|
||||
+ pipe = pipe_loader_create_screen(ldev, false);
|
||||
if (pipe && pipe->get_param(pipe, PIPE_CAP_COMPUTE)) {
|
||||
const bool has_supported_ir = supports_ir(PIPE_SHADER_IR_NATIVE) ||
|
||||
supports_ir(PIPE_SHADER_IR_NIR_SERIALIZED);
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/dri2.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/dri2.c
|
||||
@@ -2382,7 +2382,7 @@ dri2_init_screen(struct dri_screen *scre
|
||||
(void) mtx_init(&screen->opencl_func_mutex, mtx_plain);
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&screen->dev, screen->fd, false))
|
||||
- pscreen = pipe_loader_create_screen(screen->dev);
|
||||
+ pscreen = pipe_loader_create_screen(screen->dev, implicit);
|
||||
|
||||
if (!pscreen)
|
||||
goto fail;
|
||||
@@ -2438,7 +2438,7 @@ dri_swrast_kms_init_screen(struct dri_sc
|
||||
|
||||
#ifdef HAVE_DRISW_KMS
|
||||
if (pipe_loader_sw_probe_kms(&screen->dev, screen->fd))
|
||||
- pscreen = pipe_loader_create_screen(screen->dev);
|
||||
+ pscreen = pipe_loader_create_screen(screen->dev, implicit);
|
||||
#endif
|
||||
|
||||
if (!pscreen)
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/drisw.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/drisw.c
|
||||
@@ -562,7 +562,7 @@ drisw_init_screen(struct dri_screen *scr
|
||||
success = pipe_loader_sw_probe_dri(&screen->dev, lf);
|
||||
|
||||
if (success)
|
||||
- pscreen = pipe_loader_create_screen(screen->dev);
|
||||
+ pscreen = pipe_loader_create_screen(screen->dev, implicit);
|
||||
|
||||
if (!pscreen)
|
||||
goto fail;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/dri/kopper.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/dri/kopper.c
|
||||
@@ -131,7 +131,7 @@ kopper_init_screen(struct dri_screen *sc
|
||||
success = pipe_loader_vk_probe_dri(&screen->dev);
|
||||
|
||||
if (success)
|
||||
- pscreen = pipe_loader_create_screen(screen->dev);
|
||||
+ pscreen = pipe_loader_create_screen(screen->dev, implicit);
|
||||
|
||||
if (!pscreen)
|
||||
goto fail;
|
||||
Index: mesa-24.0.3/src/gallium/frontends/lavapipe/lvp_device.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/lavapipe/lvp_device.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/lavapipe/lvp_device.c
|
||||
@@ -1101,7 +1101,7 @@ lvp_physical_device_init(struct lvp_phys
|
||||
}
|
||||
device->pld = pld;
|
||||
|
||||
- device->pscreen = pipe_loader_create_screen_vk(device->pld, true);
|
||||
+ device->pscreen = pipe_loader_create_screen_vk(device->pld, true, false);
|
||||
if (!device->pscreen)
|
||||
return vk_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(device->drv_options); i++)
|
||||
Index: mesa-24.0.3/src/gallium/frontends/xa/xa_tracker.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/xa/xa_tracker.c
|
||||
+++ mesa-24.0.3/src/gallium/frontends/xa/xa_tracker.c
|
||||
@@ -172,7 +172,7 @@ xa_tracker_create(int drm_fd)
|
||||
return NULL;
|
||||
|
||||
if (pipe_loader_drm_probe_fd(&xa->dev, drm_fd, false))
|
||||
- xa->screen = pipe_loader_create_screen(xa->dev);
|
||||
+ xa->screen = pipe_loader_create_screen(xa->dev, false);
|
||||
|
||||
if (!xa->screen)
|
||||
goto out_no_screen;
|
||||
Index: mesa-24.0.3/src/gallium/include/pipe/p_screen.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/include/pipe/p_screen.h
|
||||
+++ mesa-24.0.3/src/gallium/include/pipe/p_screen.h
|
||||
@@ -806,6 +806,7 @@ struct pipe_screen {
|
||||
* Global configuration options for screen creation.
|
||||
*/
|
||||
struct pipe_screen_config {
|
||||
+ bool implicit_driver_load;
|
||||
struct driOptionCache *options;
|
||||
const struct driOptionCache *options_info;
|
||||
};
|
||||
Index: mesa-24.0.3/src/gallium/targets/d3dadapter9/drm.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/targets/d3dadapter9/drm.c
|
||||
+++ mesa-24.0.3/src/gallium/targets/d3dadapter9/drm.c
|
||||
@@ -242,7 +242,7 @@ drm_create_adapter( int fd,
|
||||
return D3DERR_DRIVERINTERNALERROR;
|
||||
}
|
||||
|
||||
- ctx->base.hal = pipe_loader_create_screen(ctx->dev);
|
||||
+ ctx->base.hal = pipe_loader_create_screen(ctx->dev, false);
|
||||
if (!ctx->base.hal) {
|
||||
ERR("Unable to load requested driver.\n");
|
||||
drm_destroy(&ctx->base);
|
||||
@@ -302,7 +302,7 @@ drm_create_adapter( int fd,
|
||||
sw_rendering |= debug_get_bool_option("D3D_ALWAYS_SOFTWARE", false);
|
||||
/* wrap it to create a software screen that can share resources */
|
||||
if (sw_rendering && pipe_loader_sw_probe_wrapped(&ctx->swdev, ctx->base.hal))
|
||||
- ctx->base.ref = pipe_loader_create_screen(ctx->swdev);
|
||||
+ ctx->base.ref = pipe_loader_create_screen(ctx->swdev, false);
|
||||
else {
|
||||
/* Use the hardware for sw rendering */
|
||||
ctx->swdev = ctx->dev;
|
||||
Index: mesa-24.0.3/src/gallium/tests/trivial/quad-tex.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/tests/trivial/quad-tex.c
|
||||
+++ mesa-24.0.3/src/gallium/tests/trivial/quad-tex.c
|
||||
@@ -97,7 +97,7 @@ static void init_prog(struct program *p)
|
||||
assert(ret);
|
||||
|
||||
/* init a pipe screen */
|
||||
- p->screen = pipe_loader_create_screen(p->dev);
|
||||
+ p->screen = pipe_loader_create_screen(p->dev, false);
|
||||
assert(p->screen);
|
||||
|
||||
/* create the pipe driver context and cso context */
|
||||
Index: mesa-24.0.3/src/gallium/tests/trivial/tri.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/tests/trivial/tri.c
|
||||
+++ mesa-24.0.3/src/gallium/tests/trivial/tri.c
|
||||
@@ -91,7 +91,7 @@ static void init_prog(struct program *p)
|
||||
assert(ret);
|
||||
|
||||
/* init a pipe screen */
|
||||
- p->screen = pipe_loader_create_screen(p->dev);
|
||||
+ p->screen = pipe_loader_create_screen(p->dev, false);
|
||||
assert(p->screen);
|
||||
|
||||
/* create the pipe driver context and cso context */
|
||||
Index: mesa-24.0.3/src/gallium/frontends/rusticl/mesa/pipe/device.rs
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/frontends/rusticl/mesa/pipe/device.rs
|
||||
+++ mesa-24.0.3/src/gallium/frontends/rusticl/mesa/pipe/device.rs
|
||||
@@ -20,7 +20,7 @@ impl PipeLoaderDevice {
|
||||
}
|
||||
|
||||
fn load_screen(self) -> Option<PipeScreen> {
|
||||
- let s = unsafe { pipe_loader_create_screen(self.ldev) };
|
||||
+ let s = unsafe { pipe_loader_create_screen(self.ldev, false) };
|
||||
PipeScreen::new(self, s)
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 481a319ad2df61fed7e2728d70eb9b945894303e Mon Sep 17 00:00:00 2001
|
||||
From 940d9bce8ec9a1acc5065bce9d3e4c369546319b Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 12 Mar 2024 10:22:24 -0400
|
||||
Subject: [PATCH 9/9] zink: don't print error messages when failing an implicit
|
||||
@ -11,11 +11,11 @@ Subject: [PATCH 9/9] zink: don't print error messages when failing an implicit
|
||||
src/gallium/drivers/zink/zink_types.h | 1 +
|
||||
4 files changed, 66 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py
|
||||
index 17222001180d5..b0bc38218922c 100644
|
||||
--- a/src/gallium/drivers/zink/zink_device_info.py
|
||||
+++ b/src/gallium/drivers/zink/zink_device_info.py
|
||||
@@ -470,14 +470,16 @@ zink_get_physical_device_info(struct zink_screen *screen)
|
||||
Index: mesa-24.0.3/src/gallium/drivers/zink/zink_device_info.py
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/drivers/zink/zink_device_info.py
|
||||
+++ mesa-24.0.3/src/gallium/drivers/zink/zink_device_info.py
|
||||
@@ -463,14 +463,16 @@ zink_get_physical_device_info(struct zin
|
||||
// enumerate device supported extensions
|
||||
VkResult result = screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, &num_extensions, NULL);
|
||||
if (result != VK_SUCCESS) {
|
||||
@ -34,11 +34,11 @@ index 17222001180d5..b0bc38218922c 100644
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < num_extensions; ++i) {
|
||||
diff --git a/src/gallium/drivers/zink/zink_instance.py b/src/gallium/drivers/zink/zink_instance.py
|
||||
index 0fbd14e5a5826..fec0844593b78 100644
|
||||
--- a/src/gallium/drivers/zink/zink_instance.py
|
||||
+++ b/src/gallium/drivers/zink/zink_instance.py
|
||||
@@ -156,12 +156,14 @@ zink_create_instance(struct zink_screen *screen, bool display_dev)
|
||||
Index: mesa-24.0.3/src/gallium/drivers/zink/zink_instance.py
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/drivers/zink/zink_instance.py
|
||||
+++ mesa-24.0.3/src/gallium/drivers/zink/zink_instance.py
|
||||
@@ -156,12 +156,14 @@ zink_create_instance(struct zink_screen
|
||||
// Build up the extensions from the reported ones but only for the unnamed layer
|
||||
uint32_t extension_count = 0;
|
||||
if (vk_EnumerateInstanceExtensionProperties(NULL, &extension_count, NULL) != VK_SUCCESS) {
|
||||
@ -55,7 +55,7 @@ index 0fbd14e5a5826..fec0844593b78 100644
|
||||
} else {
|
||||
for (uint32_t i = 0; i < extension_count; i++) {
|
||||
%for ext in extensions:
|
||||
@@ -179,12 +181,14 @@ zink_create_instance(struct zink_screen *screen, bool display_dev)
|
||||
@@ -179,12 +181,14 @@ zink_create_instance(struct zink_screen
|
||||
uint32_t layer_count = 0;
|
||||
|
||||
if (vk_EnumerateInstanceLayerProperties(&layer_count, NULL) != VK_SUCCESS) {
|
||||
@ -72,7 +72,7 @@ index 0fbd14e5a5826..fec0844593b78 100644
|
||||
} else {
|
||||
for (uint32_t i = 0; i < layer_count; i++) {
|
||||
%for layer in layers:
|
||||
@@ -256,7 +260,8 @@ zink_create_instance(struct zink_screen *screen, bool display_dev)
|
||||
@@ -256,7 +260,8 @@ zink_create_instance(struct zink_screen
|
||||
|
||||
VkResult err = vk_CreateInstance(&ici, NULL, &screen->instance);
|
||||
if (err != VK_SUCCESS) {
|
||||
@ -82,11 +82,11 @@ index 0fbd14e5a5826..fec0844593b78 100644
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
|
||||
index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
--- a/src/gallium/drivers/zink/zink_screen.c
|
||||
+++ b/src/gallium/drivers/zink/zink_screen.c
|
||||
@@ -1695,7 +1695,8 @@ choose_pdev(struct zink_screen *screen, int64_t dev_major, int64_t dev_minor)
|
||||
Index: mesa-24.0.3/src/gallium/drivers/zink/zink_screen.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/drivers/zink/zink_screen.c
|
||||
+++ mesa-24.0.3/src/gallium/drivers/zink/zink_screen.c
|
||||
@@ -1606,7 +1606,8 @@ choose_pdev(struct zink_screen *screen,
|
||||
VkPhysicalDevice *pdevs;
|
||||
VkResult result = VKSCR(EnumeratePhysicalDevices)(screen->instance, &pdev_count, NULL);
|
||||
if (result != VK_SUCCESS) {
|
||||
@ -96,7 +96,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1703,7 +1704,8 @@ choose_pdev(struct zink_screen *screen, int64_t dev_major, int64_t dev_minor)
|
||||
@@ -1614,7 +1615,8 @@ choose_pdev(struct zink_screen *screen,
|
||||
|
||||
pdevs = malloc(sizeof(*pdevs) * pdev_count);
|
||||
if (!pdevs) {
|
||||
@ -106,7 +106,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
return;
|
||||
}
|
||||
result = VKSCR(EnumeratePhysicalDevices)(screen->instance, &pdev_count, pdevs);
|
||||
@@ -1730,7 +1732,8 @@ choose_pdev(struct zink_screen *screen, int64_t dev_major, int64_t dev_minor)
|
||||
@@ -1641,7 +1643,8 @@ choose_pdev(struct zink_screen *screen,
|
||||
unsigned pdev_count = 1;
|
||||
VkResult result = VKSCR(EnumeratePhysicalDevices)(screen->instance, &pdev_count, &pdev);
|
||||
if (result != VK_SUCCESS && result != VK_INCOMPLETE) {
|
||||
@ -116,7 +116,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
return;
|
||||
}
|
||||
screen->pdev = pdev;
|
||||
@@ -3238,10 +3241,12 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3147,10 +3150,12 @@ zink_internal_create_screen(const struct
|
||||
|
||||
struct zink_screen *screen = rzalloc(NULL, struct zink_screen);
|
||||
if (!screen) {
|
||||
@ -130,7 +130,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
screen->drm_fd = -1;
|
||||
|
||||
glsl_type_singleton_init_or_ref();
|
||||
@@ -3261,7 +3266,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3170,7 +3175,8 @@ zink_internal_create_screen(const struct
|
||||
|
||||
screen->loader_lib = util_dl_open(VK_LIBNAME);
|
||||
if (!screen->loader_lib) {
|
||||
@ -140,7 +140,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3269,7 +3275,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3178,7 +3184,8 @@ zink_internal_create_screen(const struct
|
||||
screen->vk_GetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)util_dl_get_proc_address(screen->loader_lib, "vkGetDeviceProcAddr");
|
||||
if (!screen->vk_GetInstanceProcAddr ||
|
||||
!screen->vk_GetDeviceProcAddr) {
|
||||
@ -150,7 +150,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3289,7 +3296,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3199,7 +3206,8 @@ zink_internal_create_screen(const struct
|
||||
if (zink_debug & ZINK_DEBUG_VALIDATION) {
|
||||
if (!screen->instance_info.have_layer_KHRONOS_validation &&
|
||||
!screen->instance_info.have_layer_LUNARG_standard_validation) {
|
||||
@ -160,7 +160,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@@ -3304,12 +3312,15 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3214,12 +3222,15 @@ zink_internal_create_screen(const struct
|
||||
zink_verify_instance_extensions(screen);
|
||||
|
||||
if (screen->instance_info.have_EXT_debug_utils &&
|
||||
@ -179,7 +179,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
screen->is_cpu = screen->info.props.deviceType == VK_PHYSICAL_DEVICE_TYPE_CPU;
|
||||
@@ -3324,7 +3335,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3234,7 +3245,8 @@ zink_internal_create_screen(const struct
|
||||
VK_FORMAT_D32_SFLOAT_S8_UINT);
|
||||
|
||||
if (!zink_get_physical_device_info(screen)) {
|
||||
@ -189,7 +189,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3367,18 +3379,21 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3277,18 +3289,21 @@ zink_internal_create_screen(const struct
|
||||
|
||||
setup_renderdoc(screen);
|
||||
if (screen->threaded_submit && !util_queue_init(&screen->flush_queue, "zfq", 8, 1, UTIL_QUEUE_INIT_RESIZE_IF_FULL, screen)) {
|
||||
@ -214,7 +214,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@@ -3497,14 +3512,16 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3404,14 +3419,16 @@ zink_internal_create_screen(const struct
|
||||
if (!zink_screen_resource_init(&screen->base))
|
||||
goto fail;
|
||||
if (!zink_bo_init(screen)) {
|
||||
@ -233,7 +233,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
if (!util_queue_init(&screen->cache_get_thread, "zcfq", 8, 4,
|
||||
@@ -3520,12 +3537,14 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3426,12 +3443,14 @@ zink_internal_create_screen(const struct
|
||||
screen->total_video_mem = get_video_mem(screen);
|
||||
screen->clamp_video_mem = screen->total_video_mem * 0.8;
|
||||
if (!os_get_total_physical_memory(&screen->total_mem)) {
|
||||
@ -250,7 +250,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3533,35 +3552,40 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3439,35 +3458,40 @@ zink_internal_create_screen(const struct
|
||||
{
|
||||
if (!screen->info.have_EXT_descriptor_buffer) {
|
||||
if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_DB) {
|
||||
@ -296,7 +296,7 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
mesa_logw("zink: bug detected: inputAttachmentDescriptorSize(%u) > %u", (unsigned)screen->info.db_props.inputAttachmentDescriptorSize, ZINK_FBFETCH_DESCRIPTOR_SIZE);
|
||||
@@ -3620,12 +3644,14 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
@@ -3526,12 +3550,14 @@ zink_internal_create_screen(const struct
|
||||
zink_init_screen_pipeline_libs(screen);
|
||||
|
||||
if (!init_layouts(screen)) {
|
||||
@ -313,11 +313,11 @@ index 9d4952eb4ef1b..39194c7a89bf2 100644
|
||||
goto fail;
|
||||
}
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h
|
||||
index 739838d0dce14..512c5c571ba84 100644
|
||||
--- a/src/gallium/drivers/zink/zink_types.h
|
||||
+++ b/src/gallium/drivers/zink/zink_types.h
|
||||
@@ -1413,6 +1413,7 @@ struct zink_screen {
|
||||
Index: mesa-24.0.3/src/gallium/drivers/zink/zink_types.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/gallium/drivers/zink/zink_types.h
|
||||
+++ mesa-24.0.3/src/gallium/drivers/zink/zink_types.h
|
||||
@@ -1408,6 +1408,7 @@ struct zink_screen {
|
||||
bool is_cpu;
|
||||
bool abort_on_hang;
|
||||
bool frame_marker_emitted;
|
||||
@ -325,6 +325,3 @@ index 739838d0dce14..512c5c571ba84 100644
|
||||
uint64_t curr_batch; //the current batch id
|
||||
uint32_t last_finished;
|
||||
VkSemaphore sem;
|
||||
--
|
||||
GitLab
|
||||
|
50
0010-glx-silence-more-implicit-load-zink-errors.patch
Normal file
50
0010-glx-silence-more-implicit-load-zink-errors.patch
Normal file
@ -0,0 +1,50 @@
|
||||
From 5e99f24ee7d4aa9ff5178f63a79a8a313c32e44d Mon Sep 17 00:00:00 2001
|
||||
From: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
|
||||
Date: Tue, 19 Mar 2024 08:37:47 -0400
|
||||
Subject: [PATCH] glx: silence more implicit-load zink errors
|
||||
|
||||
---
|
||||
src/glx/drisw_glx.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: mesa-24.0.3/src/glx/drisw_glx.c
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/drisw_glx.c
|
||||
+++ mesa-24.0.3/src/glx/drisw_glx.c
|
||||
@@ -980,7 +980,8 @@ driswCreateScreenDriver(int screen, stru
|
||||
extensions,
|
||||
&driver_configs, implicit, psc);
|
||||
if (psc->driScreen == NULL) {
|
||||
- ErrorMessageF("glx: failed to create drisw screen\n");
|
||||
+ if (!pdpyp->zink || !implicit)
|
||||
+ ErrorMessageF("glx: failed to create drisw screen\n");
|
||||
goto handle_error;
|
||||
}
|
||||
|
||||
@@ -1049,7 +1050,8 @@ driswCreateScreenDriver(int screen, stru
|
||||
glx_screen_cleanup(&psc->base);
|
||||
free(psc);
|
||||
|
||||
- CriticalErrorMessageF("failed to load driver: %s\n", driver);
|
||||
+ if (pdpyp->zink == TRY_ZINK_YES && !implicit)
|
||||
+ CriticalErrorMessageF("failed to load driver: %s\n", driver);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
Index: mesa-24.0.3/src/glx/glxclient.h
|
||||
===================================================================
|
||||
--- mesa-24.0.3.orig/src/glx/glxclient.h
|
||||
+++ mesa-24.0.3/src/glx/glxclient.h
|
||||
@@ -133,6 +133,12 @@ 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.
|
77
Mesa.changes
77
Mesa.changes
@ -1,3 +1,80 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 20 07:18:13 UTC 2024 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
||||
|
||||
- Add patch to fix boo#1221664:
|
||||
* mesa-fix-llvm18.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 19 12:59:16 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- 0010-glx-silence-more-implicit-load-zink-errors.patch
|
||||
* glx: silence more implicit-load zink errors [gitlab mesa issue #10802]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 19 02:20:03 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- 0001-loader-delete-unused-param-from-pipe_loader_sw_probe.patch,
|
||||
0002-glx-fix-some-indentation.patch,
|
||||
0003-glx-add-an-implicit-param-to-createScreen.patch,
|
||||
0004-glx-pass-implicit-load-param-through-allocation.patch,
|
||||
0005-dri-plumb-a-implicit-param-through-createNewScreen-i.patch,
|
||||
0006-gbm-plumb-an-implicit-param-through-device-creation.patch,
|
||||
0007-frontends-dri-plumb-an-implicit-param-through-screen.patch,
|
||||
0008-pipe-loader-plumb-a-flag-for-implicit-driver-load-th.patch,
|
||||
0009-zink-don-t-print-error-messages-when-failing-an-impl.patch
|
||||
* get rid of error message:
|
||||
'MESA: error: ZINK: vkEnumeratePhysicalDevices failed
|
||||
(VK_ERROR_INITIALIZATION_FAILED)'
|
||||
[gitlab mesa issue #10802]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 19 02:10:26 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- adjusted and re-enabled python36-buildfix1.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 18 23:55:51 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- Update to new feature release 24.0.3
|
||||
* Some interesting highlights include:
|
||||
+ New PowerVR Vulkan driver for Imagination's GPU
|
||||
+ NVIDIA Vulkan driver NVK has seen many improvements
|
||||
+ AMD Vulkan driver RADV ray-tracing performance improvements
|
||||
+ Microsoft OpenGL driver D3D12 has reached OpenGL 4.6 support
|
||||
* New extensions & features (in no particular order):
|
||||
+ VK_EXT_image_compression_control on RADV
|
||||
+ VK_EXT_device_fault on RADV
|
||||
+ OpenGL 3.3 on Asahi
|
||||
+ Geometry shaders on Asahi
|
||||
+ GL_ARB_texture_cube_map_array on Asahi
|
||||
+ GL_ARB_clip_control on Asahi
|
||||
+ GL_ARB_timer_query on Asahi
|
||||
+ GL_EXT_disjoint_timer_query on Asahi
|
||||
+ GL_ARB_base_instance on Asahi
|
||||
+ OpenGL 4.6 (up from 4.2) on d3d12
|
||||
+ VK_EXT_depth_clamp_zero_one on RADV
|
||||
+ GL_ARB_shader_texture_image_samples on Asahi
|
||||
+ GL_ARB_indirect_parameters on Asahi
|
||||
+ GL_ARB_viewport_array on Asahi
|
||||
+ GL_ARB_fragment_layer_viewport on Asahi
|
||||
+ GL_ARB_cull_distance on Asahi
|
||||
+ GL_ARB_transform_feedback_overflow_query on Asahi
|
||||
+ VK_KHR_calibrated_timestamps on RADV
|
||||
+ VK_KHR_vertex_attribute_divisor on RADV
|
||||
+ VK_KHR_maintenance6 on RADV
|
||||
+ VK_KHR_ray_tracing_position_fetch on RADV
|
||||
+ EGL_EXT_query_reset_notification_strategy
|
||||
- supersedes U_fix-ac-llvm-LLVM-18-remove-useless-passes.patch
|
||||
- adjusted n_add-Mesa-headers-again.patch, u_dep_xcb.patch
|
||||
- disabled python36-buildfix1.patch
|
||||
- removed disabled patch u_fix-build-on-ppc64le.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Mar 16 18:44:50 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- get rid of u_zink-dont-print-error-messages-when-failing-an-implicit.patch
|
||||
completely
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 14 04:48:32 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
|
33
Mesa.spec
33
Mesa.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file
|
||||
# spec file for package Mesa
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
@ -42,7 +42,7 @@
|
||||
|
||||
%define glamor 1
|
||||
%define _name_archive mesa
|
||||
%define _version 23.3.6
|
||||
%define _version 24.0.3
|
||||
%define with_opencl 0
|
||||
%define with_rusticl 0
|
||||
%define with_vulkan 0
|
||||
@ -123,7 +123,7 @@
|
||||
%endif
|
||||
|
||||
Name: Mesa%{psuffix}
|
||||
Version: 23.3.6
|
||||
Version: 24.0.3
|
||||
Release: 0
|
||||
Summary: System for rendering 3-D graphics
|
||||
License: MIT
|
||||
@ -142,14 +142,23 @@ Patch11: u_0001-intel-genxml-Drop-from-__future__-import-annotations.patc
|
||||
Patch12: u_0002-intel-genxml-Add-a-untyped-OrderedDict-fallback-for-.patch
|
||||
Patch13: python36-buildfix1.patch
|
||||
Patch14: python36-buildfix2.patch
|
||||
Patch15: U_fix-ac-llvm-LLVM-18-remove-useless-passes.patch
|
||||
# PATCH-FIX-UPSTREAM - boo#1221664
|
||||
Patch15: mesa-fix-llvm18.patch
|
||||
# never to be upstreamed
|
||||
Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
Patch58: u_dep_xcb.patch
|
||||
Patch100: U_fix-mpeg1_2-decode-mesa-20.2.patch
|
||||
Patch200: u_fix-build-on-ppc64le.patch
|
||||
Patch400: n_stop-iris-flicker.patch
|
||||
Patch500: u_zink-dont-print-error-messages-when-failing-an-implicit.patch
|
||||
Patch501: 0001-loader-delete-unused-param-from-pipe_loader_sw_probe.patch
|
||||
Patch502: 0002-glx-fix-some-indentation.patch
|
||||
Patch503: 0003-glx-add-an-implicit-param-to-createScreen.patch
|
||||
Patch504: 0004-glx-pass-implicit-load-param-through-allocation.patch
|
||||
Patch505: 0005-dri-plumb-a-implicit-param-through-createNewScreen-i.patch
|
||||
Patch506: 0006-gbm-plumb-an-implicit-param-through-device-creation.patch
|
||||
Patch507: 0007-frontends-dri-plumb-an-implicit-param-through-screen.patch
|
||||
Patch508: 0008-pipe-loader-plumb-a-flag-for-implicit-driver-load-th.patch
|
||||
Patch509: 0009-zink-don-t-print-error-messages-when-failing-an-impl.patch
|
||||
Patch510: 0010-glx-silence-more-implicit-load-zink-errors.patch
|
||||
%ifarch %{ix86} x86_64
|
||||
BuildRequires: DirectX-Headers
|
||||
%endif
|
||||
@ -771,9 +780,17 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
||||
%endif
|
||||
%patch -P 58 -p1
|
||||
%patch -P 100 -p1
|
||||
#%patch -P 200 -p1
|
||||
%patch -P 400 -p1
|
||||
#%patch -P 500 -p1
|
||||
%patch -P 501 -p1
|
||||
%patch -P 502 -p1
|
||||
%patch -P 503 -p1
|
||||
%patch -P 504 -p1
|
||||
%patch -P 505 -p1
|
||||
%patch -P 506 -p1
|
||||
%patch -P 507 -p1
|
||||
%patch -P 508 -p1
|
||||
%patch -P 509 -p1
|
||||
%patch -P 510 -p1
|
||||
|
||||
# Remove requires to vulkan libs from baselibs.conf on platforms
|
||||
# where vulkan build is disabled; ugly ...
|
||||
|
@ -1,58 +0,0 @@
|
||||
From bc7e363f8e1a26342e6fd7241c1f0ebb722338d6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Kai=20Wasserb=C3=A4ch?= <kai@dev.carbon-project.org>
|
||||
Date: Wed, 22 Nov 2023 20:21:11 +0100
|
||||
Subject: [PATCH] fix: ac/llvm: LLVM 18: remove useless passes, partially
|
||||
removed upstream
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Upstream removed llvm::createLoopSinkPass() in commit
|
||||
<https://github.com/llvm/llvm-project/commit/b9975cec0ea0a2f10d65b7bd1197d9e1706cbd3d>
|
||||
and there is no useful alternative except moving to the new pass
|
||||
manager.
|
||||
|
||||
On top of that, the usage of this optimisation pass and
|
||||
PromoteMemoryToRegisterPass were just useless, according to the
|
||||
upstream developer of the commit named above. Therefore the easiest
|
||||
solution is, as him, Marek and Dave suggested, to just remove these two
|
||||
passes from the pipeline for now.
|
||||
|
||||
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10192
|
||||
Reference: https://github.com/llvm/llvm-project/pull/72811
|
||||
Reference: https://github.com/llvm/llvm-project/commit/b9975cec0ea0a2f10d65b7bd1197d9e1706cbd3d
|
||||
Suggested-by: Dave Airlie <airlied@redhat.com>
|
||||
Suggested-by: Aiden Grossman <agrossman154@yahoo.com>
|
||||
Suggested-by: Marek Olšák <maraeo@gmail.com>
|
||||
Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
|
||||
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26336>
|
||||
---
|
||||
src/amd/llvm/ac_llvm_helper.cpp | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/src/amd/llvm/ac_llvm_helper.cpp b/src/amd/llvm/ac_llvm_helper.cpp
|
||||
index 40a4399e705..5d065279ad1 100644
|
||||
--- a/src/amd/llvm/ac_llvm_helper.cpp
|
||||
+++ b/src/amd/llvm/ac_llvm_helper.cpp
|
||||
@@ -299,17 +299,12 @@ LLVMPassManagerRef ac_create_passmgr(LLVMTargetLibraryInfoRef target_library_inf
|
||||
*/
|
||||
unwrap(passmgr)->add(createBarrierNoopPass());
|
||||
|
||||
- /* This pass eliminates all loads and stores on alloca'd pointers. */
|
||||
- unwrap(passmgr)->add(createPromoteMemoryToRegisterPass());
|
||||
#if LLVM_VERSION_MAJOR >= 16
|
||||
unwrap(passmgr)->add(createSROAPass(true));
|
||||
#else
|
||||
unwrap(passmgr)->add(createSROAPass());
|
||||
#endif
|
||||
/* TODO: restore IPSCCP */
|
||||
- if (LLVM_VERSION_MAJOR >= 16)
|
||||
- unwrap(passmgr)->add(createLoopSinkPass());
|
||||
- /* TODO: restore IPSCCP */
|
||||
unwrap(passmgr)->add(createLICMPass());
|
||||
unwrap(passmgr)->add(createCFGSimplificationPass());
|
||||
/* This is recommended by the instruction combining pass. */
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cd3d6c60121dea73abbae99d399dc2facaecde1a8c6bd647e6d85410ff4b577b
|
||||
size 19455492
|
Binary file not shown.
3
mesa-24.0.3.tar.xz
Normal file
3
mesa-24.0.3.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:77aec9a2a37b7d3596ea1640b3cc53d0b5d9b3b52abed89de07e3717e91bfdbe
|
||||
size 20021264
|
BIN
mesa-24.0.3.tar.xz.sig
Normal file
BIN
mesa-24.0.3.tar.xz.sig
Normal file
Binary file not shown.
47
mesa-fix-llvm18.patch
Normal file
47
mesa-fix-llvm18.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From 99f0449987bec1f82cd42a06f40bb4a863a37792 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Mon, 11 Mar 2024 14:45:41 +0100
|
||||
Subject: [PATCH] Pass no-verify-fixpoint option to instcombine in LLVM 18
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When LLVM 18 is used, pass the no-verify-fixpoint option when
|
||||
running the instcombine pass. Otherwise LLVM may abort with an
|
||||
error.
|
||||
|
||||
The background here is that this option is enabled by default for
|
||||
testing purposes, because instcombine is normally only explicitly
|
||||
invoked like this inside tests. If it is used in an actual
|
||||
production pipeline, the no-verify-fixpoint option needs to be
|
||||
enabled.
|
||||
|
||||
This should fix the issue reported at
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2268800.
|
||||
|
||||
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
|
||||
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28101>
|
||||
---
|
||||
src/gallium/auxiliary/gallivm/lp_bld_init.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
|
||||
index cd2108f3a088d..1345d85b22439 100644
|
||||
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
|
||||
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
|
||||
@@ -609,7 +609,11 @@ gallivm_compile_module(struct gallivm_state *gallivm)
|
||||
LLVMRunPasses(gallivm->module, passes, LLVMGetExecutionEngineTargetMachine(gallivm->engine), opts);
|
||||
|
||||
if (!(gallivm_perf & GALLIVM_PERF_NO_OPT))
|
||||
+#if LLVM_VERSION_MAJOR >= 18
|
||||
+ strcpy(passes, "sroa,early-cse,simplifycfg,reassociate,mem2reg,instsimplify,instcombine<no-verify-fixpoint>");
|
||||
+#else
|
||||
strcpy(passes, "sroa,early-cse,simplifycfg,reassociate,mem2reg,instsimplify,instcombine");
|
||||
+#endif
|
||||
else
|
||||
strcpy(passes, "mem2reg");
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,15 +1,20 @@
|
||||
Index: mesa-23.3.0/include/meson.build
|
||||
Index: mesa-24.0.3/include/meson.build
|
||||
===================================================================
|
||||
--- mesa-23.3.0.orig/include/meson.build
|
||||
+++ mesa-23.3.0/include/meson.build
|
||||
@@ -28,10 +28,8 @@ if with_android_stub
|
||||
--- mesa-24.0.3.orig/include/meson.build
|
||||
+++ mesa-24.0.3/include/meson.build
|
||||
@@ -28,7 +28,6 @@ if with_android_stub
|
||||
inc_include += [include_directories('android_stub')]
|
||||
endif
|
||||
|
||||
-if not with_glvnd
|
||||
-if not with_glvnd and host_machine.system() != 'windows'
|
||||
if with_gles1 or with_gles2 or with_opengl or with_egl
|
||||
install_headers('KHR/khrplatform.h', subdir : 'KHR')
|
||||
- endif
|
||||
endif
|
||||
@@ -84,7 +83,6 @@ if not with_glvnd and host_machine.syste
|
||||
subdir : 'EGL',
|
||||
)
|
||||
endif
|
||||
-endif
|
||||
|
||||
if with_gles1
|
||||
install_headers(
|
||||
# Non-upstream headers
|
||||
if with_egl
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- mesa-23.3.3/src/nouveau/nvidia-headers/class_parser.py.orig 2024-01-20 12:47:36.464476669 +0100
|
||||
+++ mesa-23.3.3/src/nouveau/nvidia-headers/class_parser.py 2024-01-20 13:04:30.212851443 +0100
|
||||
--- mesa-23.3.3/src/nouveau/headers/class_parser.py.orig 2024-01-20 12:47:36.464476669 +0100
|
||||
+++ mesa-23.3.3/src/nouveau/headers/class_parser.py 2024-01-20 13:04:30.212851443 +0100
|
||||
@@ -9,6 +9,16 @@
|
||||
|
||||
from mako.template import Template
|
||||
|
@ -1,8 +1,8 @@
|
||||
Index: mesa-23.3.0/meson.build
|
||||
Index: mesa-24.0.3/meson.build
|
||||
===================================================================
|
||||
--- mesa-23.3.0.orig/meson.build
|
||||
+++ mesa-23.3.0/meson.build
|
||||
@@ -2022,9 +2022,11 @@ if with_platform_x11
|
||||
--- mesa-24.0.3.orig/meson.build
|
||||
+++ mesa-24.0.3/meson.build
|
||||
@@ -2069,9 +2069,11 @@ if with_platform_x11
|
||||
endif
|
||||
endif
|
||||
if with_any_vk or with_egl or (with_glx == 'dri' and with_dri_platform == 'drm')
|
||||
@ -14,15 +14,3 @@ Index: mesa-23.3.0/meson.build
|
||||
dep_xcb_dri3 = dependency('xcb-dri3')
|
||||
dep_xcb_present = dependency('xcb-present')
|
||||
# until xcb-dri3 has been around long enough to make a hard-dependency:
|
||||
Index: mesa-23.3.0/src/loader/meson.build
|
||||
===================================================================
|
||||
--- mesa-23.3.0.orig/src/loader/meson.build
|
||||
+++ mesa-23.3.0/src/loader/meson.build
|
||||
@@ -47,6 +47,6 @@ libloader = static_library(
|
||||
c_args : loader_c_args,
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
include_directories : [inc_include, inc_src, inc_util],
|
||||
- dependencies : [dep_libdrm, dep_thread, dep_xcb_xrandr],
|
||||
+ dependencies : [dep_libdrm, dep_thread, dep_xcb_xrandr, dep_xcb],
|
||||
build_by_default : false,
|
||||
)
|
||||
|
@ -1,42 +0,0 @@
|
||||
Index: mesa-23.0.0/include/CL/cl_platform.h
|
||||
===================================================================
|
||||
--- mesa-23.0.0.orig/include/CL/cl_platform.h
|
||||
+++ mesa-23.0.0/include/CL/cl_platform.h
|
||||
@@ -385,7 +385,9 @@ typedef unsigned int cl_GLenum;
|
||||
/* Define basic vector types */
|
||||
#if defined( __VEC__ )
|
||||
#if !defined(__clang__)
|
||||
+ #ifndef __cplusplus
|
||||
#include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
|
||||
+ #endif
|
||||
#endif
|
||||
typedef __vector unsigned char __cl_uchar16;
|
||||
typedef __vector signed char __cl_char16;
|
||||
Index: mesa-23.0.0/src/gallium/drivers/llvmpipe/lp_rast_tri.c
|
||||
===================================================================
|
||||
--- mesa-23.0.0.orig/src/gallium/drivers/llvmpipe/lp_rast_tri.c
|
||||
+++ mesa-23.0.0/src/gallium/drivers/llvmpipe/lp_rast_tri.c
|
||||
@@ -488,7 +488,9 @@ lp_rast_triangle_32_3_4(struct lp_raster
|
||||
|
||||
#if defined(_ARCH_PWR8) && UTIL_ARCH_LITTLE_ENDIAN
|
||||
|
||||
+#ifndef __cplusplus
|
||||
#include <altivec.h>
|
||||
+#endif
|
||||
#include "util/u_pwr8.h"
|
||||
|
||||
static inline void
|
||||
Index: mesa-23.0.0/src/gallium/drivers/llvmpipe/lp_setup_tri.c
|
||||
===================================================================
|
||||
--- mesa-23.0.0.orig/src/gallium/drivers/llvmpipe/lp_setup_tri.c
|
||||
+++ mesa-23.0.0/src/gallium/drivers/llvmpipe/lp_setup_tri.c
|
||||
@@ -46,7 +46,9 @@
|
||||
#if DETECT_ARCH_SSE
|
||||
#include <emmintrin.h>
|
||||
#elif defined(_ARCH_PWR8) && UTIL_ARCH_LITTLE_ENDIAN
|
||||
+#ifndef __cplusplus
|
||||
#include <altivec.h>
|
||||
+#endif
|
||||
#include "util/u_pwr8.h"
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user