浏览代码

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 <emil.l.velikov@gmail.com>
tags/10.3-branchpoint
Emil Velikov 11 年前
父节点
当前提交
86c30c6c5b

+ 78
- 0
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 */

+ 4
- 0
src/gallium/include/state_tracker/drm_driver.h 查看文件

@@ -119,4 +119,8 @@ struct drm_driver_descriptor driver_descriptor = { \

extern struct pipe_screen *dd_create_screen(int fd);

extern const char *dd_driver_name(void);

extern const struct drm_conf_ret *dd_configuration(enum drm_conf conf);

#endif

正在加载...
取消
保存