diff options
author | Eric Anholt <[email protected]> | 2017-02-03 10:54:12 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2017-02-06 12:44:06 -0800 |
commit | 61bb1a9795e80501e9000d423d5cc5310b77e65b (patch) | |
tree | d53cffb7f80a8d69d7bb79f4f6cf6ed0d1b887a7 /src/gallium | |
parent | 13a28ff2368ffdcaafee3cb6c45df77f75b02aea (diff) |
targets: Use a macro to reduce cut and paste in driver setup.
All the replicated prototypes/function bodies obfuscated the interesting
logic of the file: the mapping from driver enable macros to entrypoints we
expose, and the way that the swrast entrypoints are special compared to
the DRM entrypoints.
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/targets/dri/target.c | 133 |
1 files changed, 22 insertions, 111 deletions
diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c index dba18cce65c..df93c94ea83 100644 --- a/src/gallium/targets/dri/target.c +++ b/src/gallium/targets/dri/target.c @@ -3,6 +3,14 @@ #include "dri_screen.h" +#define DEFINE_LOADER_DRM_ENTRYPOINT(drivername) \ +const __DRIextension **__driDriverGetExtensions_##drivername(void); \ +PUBLIC const __DRIextension **__driDriverGetExtensions_##drivername(void) \ +{ \ + globalDriverAPI = &galliumdrm_driver_api; \ + return galliumdrm_driver_extensions; \ +} + #if defined(GALLIUM_SOFTPIPE) const __DRIextension **__driDriverGetExtensions_swrast(void); @@ -27,154 +35,57 @@ PUBLIC const __DRIextension **__driDriverGetExtensions_kms_swrast(void) #endif #if defined(GALLIUM_I915) - -const __DRIextension **__driDriverGetExtensions_i915(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_i915(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(i915) #endif #if defined(GALLIUM_ILO) - -const __DRIextension **__driDriverGetExtensions_i965(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_i965(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(i965) #endif #if defined(GALLIUM_NOUVEAU) - -const __DRIextension **__driDriverGetExtensions_nouveau(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_nouveau(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(nouveau) #endif #if defined(GALLIUM_R300) - -const __DRIextension **__driDriverGetExtensions_r300(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_r300(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(r300) #endif #if defined(GALLIUM_R600) - -const __DRIextension **__driDriverGetExtensions_r600(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_r600(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(r600) #endif #if defined(GALLIUM_RADEONSI) - -const __DRIextension **__driDriverGetExtensions_radeonsi(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_radeonsi(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(radeonsi) #endif #if defined(GALLIUM_VMWGFX) - -const __DRIextension **__driDriverGetExtensions_vmwgfx(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_vmwgfx(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(vmwgfx) #endif #if defined(GALLIUM_FREEDRENO) - -const __DRIextension **__driDriverGetExtensions_msm(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_msm(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} - -const __DRIextension **__driDriverGetExtensions_kgsl(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_kgsl(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(msm) +DEFINE_LOADER_DRM_ENTRYPOINT(kgsl) #endif #if defined(GALLIUM_VIRGL) - -const __DRIextension **__driDriverGetExtensions_virtio_gpu(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_virtio_gpu(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(virtio_gpu) #endif #if defined(GALLIUM_VC4) - -const __DRIextension **__driDriverGetExtensions_vc4(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_vc4(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(vc4) #if defined(USE_VC4_SIMULATOR) -const __DRIextension **__driDriverGetExtensions_i965(void); - /** * When building using the simulator (on x86), we advertise ourselves as the * i965 driver so that you can just make a directory with a link from * i965_dri.so to the built vc4_dri.so, and point LIBGL_DRIVERS_PATH to that * on your i965-using host to run the driver under simulation. */ -PUBLIC const __DRIextension **__driDriverGetExtensions_i965(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(i965) #endif #endif #if defined(GALLIUM_ETNAVIV) - -const __DRIextension **__driDriverGetExtensions_imx_drm(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_imx_drm(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} - -const __DRIextension **__driDriverGetExtensions_etnaviv(void); - -PUBLIC const __DRIextension **__driDriverGetExtensions_etnaviv(void) -{ - globalDriverAPI = &galliumdrm_driver_api; - return galliumdrm_driver_extensions; -} +DEFINE_LOADER_DRM_ENTRYPOINT(imx_drm) +DEFINE_LOADER_DRM_ENTRYPOINT(etnaviv) #endif |