mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 18:10:17 +01:00
drisw: Add fallback logic for choosing a driver to use
Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8128>
This commit is contained in:
parent
661922f6ac
commit
27ed515c05
2 changed files with 50 additions and 32 deletions
|
|
@ -76,25 +76,34 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
|
|||
static inline struct pipe_screen *
|
||||
sw_screen_create(struct sw_winsys *winsys)
|
||||
{
|
||||
const char *default_driver;
|
||||
const char *driver;
|
||||
|
||||
const char *drivers[] = {
|
||||
debug_get_option("GALLIUM_DRIVER", ""),
|
||||
#if defined(GALLIUM_LLVMPIPE)
|
||||
default_driver = "llvmpipe";
|
||||
#elif defined(GALLIUM_SOFTPIPE)
|
||||
default_driver = "softpipe";
|
||||
#elif defined(GALLIUM_SWR)
|
||||
default_driver = "swr";
|
||||
#elif defined(GALLIUM_ZINK)
|
||||
default_driver = "zink";
|
||||
#elif defined(GALLIUM_D3D12)
|
||||
default_driver = "d3d12";
|
||||
#else
|
||||
default_driver = "";
|
||||
"llvmpipe",
|
||||
#endif
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
"softpipe",
|
||||
#endif
|
||||
#if defined(GALLIUM_SWR)
|
||||
"swr",
|
||||
#endif
|
||||
#if defined(GALLIUM_ZINK)
|
||||
"zink",
|
||||
#endif
|
||||
#if defined(GALLIUM_D3D12)
|
||||
"d3d12",
|
||||
#endif
|
||||
};
|
||||
|
||||
driver = debug_get_option("GALLIUM_DRIVER", default_driver);
|
||||
return sw_screen_create_named(winsys, driver);
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(drivers); i++) {
|
||||
struct pipe_screen *screen = sw_screen_create_named(winsys, drivers[i]);
|
||||
if (screen)
|
||||
return screen;
|
||||
/* If the env var is set, don't keep trying things */
|
||||
else if (i == 0 && drivers[i][0] != '\0')
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -82,25 +82,34 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
|
|||
struct pipe_screen *
|
||||
sw_screen_create(struct sw_winsys *winsys)
|
||||
{
|
||||
const char *default_driver;
|
||||
const char *driver;
|
||||
|
||||
const char *drivers[] = {
|
||||
debug_get_option("GALLIUM_DRIVER", ""),
|
||||
#if defined(GALLIUM_LLVMPIPE)
|
||||
default_driver = "llvmpipe";
|
||||
#elif defined(GALLIUM_SOFTPIPE)
|
||||
default_driver = "softpipe";
|
||||
#elif defined(GALLIUM_SWR)
|
||||
default_driver = "swr";
|
||||
#elif defined(GALLIUM_ZINK)
|
||||
default_driver = "zink";
|
||||
#elif defined(GALLIUM_D3D12)
|
||||
default_driver = "d3d12";
|
||||
#else
|
||||
default_driver = "";
|
||||
"llvmpipe",
|
||||
#endif
|
||||
#if defined(GALLIUM_SOFTPIPE)
|
||||
"softpipe",
|
||||
#endif
|
||||
#if defined(GALLIUM_SWR)
|
||||
"swr",
|
||||
#endif
|
||||
#if defined(GALLIUM_ZINK)
|
||||
"zink",
|
||||
#endif
|
||||
#if defined(GALLIUM_D3D12)
|
||||
"d3d12",
|
||||
#endif
|
||||
};
|
||||
|
||||
driver = debug_get_option("GALLIUM_DRIVER", default_driver);
|
||||
return sw_screen_create_named(winsys, driver);
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(drivers); i++) {
|
||||
struct pipe_screen *screen = sw_screen_create_named(winsys, drivers[i]);
|
||||
if (screen)
|
||||
return screen;
|
||||
/* If the env var is set, don't keep trying things */
|
||||
else if (i == 0 && drivers[i][0] != '\0')
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue