diff options
author | Emil Velikov <[email protected]> | 2014-05-18 00:20:47 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2014-06-19 12:40:01 +0100 |
commit | 86c30c6c5b0d06b36b369c29a0a9264a2d1819d9 (patch) | |
tree | c00412ee96f20d424f38400b75154b2c408e9fa9 /src/gallium/auxiliary | |
parent | 573b55e302dcf47ed6c2fe327ce720d72118921b (diff) |
target-helpers: add dd_configuration(), dd_driver_name()
Add a couple of helpers to be used by the dri targets when
built with static pipe-drivers. Both functions provide
functionality required by the dri state-tracker.
With this patch ilo, nouveau and r300 gain support for
throttle dri configuration.
Signed-off-by: Emil Velikov <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/target-helpers/inline_drm_helper.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h index e039a8254d4..a03db3a5920 100644 --- a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h @@ -203,4 +203,82 @@ dd_create_screen(int fd) return NULL; } +inline const char * +dd_driver_name(void) +{ + return driver_name; +} + +static const struct drm_conf_ret throttle_ret = { + .type = DRM_CONF_INT, + .val.val_int = 2, +}; + +static const struct drm_conf_ret share_fd_ret = { + .type = DRM_CONF_BOOL, + .val.val_int = true, +}; + +static const struct drm_conf_ret * +configuration_query(enum drm_conf conf) +{ + switch (conf) { + case DRM_CONF_THROTTLE: + return &throttle_ret; + case DRM_CONF_SHARE_FD: + return &share_fd_ret; + default: + break; + } + return NULL; +} + +inline const struct drm_conf_ret * +dd_configuration(enum drm_conf conf) +{ + if (!driver_name) + return NULL; + +#if defined(GALLIUM_I915) + if (strcmp(driver_name, "i915") == 0) + return NULL; + else +#endif +#if defined(GALLIUM_ILO) + if (strcmp(driver_name, "i965") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_NOUVEAU) + if (strcmp(driver_name, "nouveau") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_R300) + if (strcmp(driver_name, "r300") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_R600) + if (strcmp(driver_name, "r600") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_RADEONSI) + if (strcmp(driver_name, "radeonsi") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_VMWGFX) + if (strcmp(driver_name, "vmwgfx") == 0) + return configuration_query(conf); + else +#endif +#if defined(GALLIUM_FREEDRENO) + if ((strcmp(driver_name, "kgsl") == 0) || (strcmp(driver_name, "msm") == 0)) + return NULL; + else +#endif + return NULL; +} #endif /* INLINE_DRM_HELPER_H */ |