gallium/drm: Refactor the stub screen create functions.

This gives me one place to document why it works this way.  This does make
the debug message a little less helpful ("etna" instead of "etnaviv" and
"vmwgfx" instead of "svga", but you should only be able to reach this when
doing something like trying the radeon/nouveau vdpau target on the wrong
DRM device for example.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6751>
This commit is contained in:
Eric Anholt
2020-09-16 09:09:19 -07:00
parent 9ec28b8d22
commit bc10b4968e
+32 -139
View File
@@ -7,6 +7,21 @@
#include "frontend/drm_driver.h"
#include "util/driconf.h"
/* The static pipe loader refers to all of the pipe_*_create_screen functions
* for all drivers, regardless of whether they are configured in this Mesa
* build, or whether they're included in the specific gallium target. The
* target will include this header with the #defines for the specific drivers
* it's including, and the disabled drivers will have their create function
* stubbed out.
*/
#define STUB_CREATE_SCREEN(driver) \
struct pipe_screen * \
pipe_##driver##_create_screen(int fd, const struct pipe_screen_config *config) \
{ \
fprintf(stderr, #driver ": driver missing\n"); \
return NULL; \
}
#ifdef GALLIUM_I915
#include "i915/drm/i915_drm_public.h"
#include "i915/i915_public.h"
@@ -26,14 +41,7 @@ pipe_i915_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_i915_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "i915g: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(i915)
#endif
#ifdef GALLIUM_IRIS
@@ -53,16 +61,8 @@ const char *iris_driconf_xml =
;
#else
struct pipe_screen *
pipe_iris_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "iris: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(iris)
const char *iris_driconf_xml = NULL;
#endif
#ifdef GALLIUM_NOUVEAU
@@ -78,14 +78,7 @@ pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_nouveau_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "nouveau: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(nouveau)
#endif
#ifdef GALLIUM_KMSRO
@@ -101,13 +94,7 @@ pipe_kmsro_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_kmsro_create_screen(int fd, const struct pipe_screen_config *config)
{
return NULL;
}
STUB_CREATE_SCREEN(kmsro)
#endif
#ifdef GALLIUM_R300
@@ -125,14 +112,7 @@ pipe_r300_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_r300_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "r300: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(r300)
#endif
#ifdef GALLIUM_R600
@@ -150,14 +130,7 @@ pipe_r600_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_r600_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "r600: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(r600)
#endif
#ifdef GALLIUM_RADEONSI
@@ -176,16 +149,8 @@ const char *radeonsi_driconf_xml =
;
#else
struct pipe_screen *
pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "radeonsi: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(radeonsi)
const char *radeonsi_driconf_xml = NULL;
#endif
#ifdef GALLIUM_VMWGFX
@@ -207,14 +172,7 @@ pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "svga: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(vmwgfx)
#endif
#ifdef GALLIUM_FREEDRENO
@@ -230,14 +188,7 @@ pipe_freedreno_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_freedreno_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "freedreno: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(freedreno)
#endif
#ifdef GALLIUM_VIRGL
@@ -258,16 +209,8 @@ const char *virgl_driconf_xml =
;
#else
struct pipe_screen *
pipe_virgl_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "virgl: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(virgl)
const char *virgl_driconf_xml = NULL;
#endif
#ifdef GALLIUM_VC4
@@ -282,14 +225,7 @@ pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config)
return screen ? debug_screen_wrap(screen) : NULL;
}
#else
struct pipe_screen *
pipe_vc4_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "vc4: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(vc4)
#endif
#ifdef GALLIUM_V3D
@@ -309,16 +245,8 @@ const char *v3d_driconf_xml =
;
#else
struct pipe_screen *
pipe_v3d_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "v3d: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(v3d)
const char *v3d_driconf_xml = NULL;
#endif
#ifdef GALLIUM_PANFROST
@@ -334,14 +262,7 @@ pipe_panfrost_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_panfrost_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "panfrost: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(panfrost)
#endif
#ifdef GALLIUM_ETNAVIV
@@ -357,14 +278,7 @@ pipe_etna_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_etna_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "etnaviv: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(etna)
#endif
#ifdef GALLIUM_TEGRA
@@ -381,14 +295,7 @@ pipe_tegra_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_tegra_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "tegra: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(tegra)
#endif
#ifdef GALLIUM_LIMA
@@ -404,14 +311,7 @@ pipe_lima_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_lima_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "lima: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(lima)
#endif
#ifdef GALLIUM_ZINK
@@ -426,14 +326,7 @@ pipe_zink_create_screen(int fd, const struct pipe_screen_config *config)
}
#else
struct pipe_screen *
pipe_zink_create_screen(int fd, const struct pipe_screen_config *config)
{
fprintf(stderr, "zink: driver missing\n");
return NULL;
}
STUB_CREATE_SCREEN(zink)
#endif
#endif /* DRM_HELPER_H */