xmlconfig: add kernel_driver device attribute
This attribute can be used by loader to apply different option to device use specific kernel driver. Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> Acked-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
@@ -108,7 +108,7 @@ pipe_loader_load_options(struct pipe_loader_device *dev)
|
||||
|
||||
driParseOptionInfo(&dev->option_info, xml_options);
|
||||
driParseConfigFiles(&dev->option_cache, &dev->option_info, 0,
|
||||
dev->driver_name);
|
||||
dev->driver_name, NULL);
|
||||
}
|
||||
|
||||
char *
|
||||
|
@@ -252,7 +252,7 @@ drm_create_adapter( int fd,
|
||||
ctx->base.throttling = FALSE;
|
||||
|
||||
driParseOptionInfo(&defaultInitOptions, __driConfigOptionsNine);
|
||||
driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, "nine");
|
||||
driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, "nine", NULL);
|
||||
if (driCheckOption(&userInitOptions, "throttle_value", DRI_INT)) {
|
||||
throttling_value_user = driQueryOptioni(&userInitOptions, "throttle_value");
|
||||
if (throttling_value_user == -1)
|
||||
|
@@ -118,7 +118,7 @@ static char *loader_get_dri_config_device_id(void)
|
||||
char *prime = NULL;
|
||||
|
||||
driParseOptionInfo(&defaultInitOptions, __driConfigOptionsLoader);
|
||||
driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, "loader");
|
||||
driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, "loader", NULL);
|
||||
if (driCheckOption(&userInitOptions, "device_id", DRI_STRING))
|
||||
prime = strdup(driQueryOptionstr(&userInitOptions, "device_id"));
|
||||
driDestroyOptionCache(&userInitOptions);
|
||||
|
@@ -148,7 +148,7 @@ driCreateNewScreen2(int scrn, int fd,
|
||||
|
||||
/* Option parsing before ->InitScreen(), as some options apply there. */
|
||||
driParseOptionInfo(&psp->optionInfo, __dri2ConfigOptions);
|
||||
driParseConfigFiles(&psp->optionCache, &psp->optionInfo, psp->myNum, "dri2");
|
||||
driParseConfigFiles(&psp->optionCache, &psp->optionInfo, psp->myNum, "dri2", NULL);
|
||||
|
||||
*driver_configs = psp->driver->InitScreen(psp);
|
||||
if (*driver_configs == NULL) {
|
||||
|
@@ -448,7 +448,7 @@ intelInitContext(struct intel_context *intel,
|
||||
0, sizeof(ctx->TextureFormatSupported));
|
||||
|
||||
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
|
||||
sPriv->myNum, "i915");
|
||||
sPriv->myNum, "i915", NULL);
|
||||
intel->maxBatchSize = 4096;
|
||||
|
||||
/* Estimate the size of the mappable aperture into the GTT. There's an
|
||||
|
@@ -790,7 +790,8 @@ brw_process_driconf_options(struct brw_context *brw)
|
||||
|
||||
driOptionCache *options = &brw->optionCache;
|
||||
driParseConfigFiles(options, &brw->screen->optionCache,
|
||||
brw->driContext->driScreenPriv->myNum, "i965");
|
||||
brw->driContext->driScreenPriv->myNum,
|
||||
"i965", NULL);
|
||||
|
||||
int bo_reuse_mode = driQueryOptioni(options, "bo_reuse");
|
||||
switch (bo_reuse_mode) {
|
||||
|
@@ -2442,7 +2442,8 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
|
||||
memset(&options, 0, sizeof(options));
|
||||
|
||||
driParseOptionInfo(&options, brw_config_options.xml);
|
||||
driParseConfigFiles(&screen->optionCache, &options, dri_screen->myNum, "i965");
|
||||
driParseConfigFiles(&screen->optionCache, &options, dri_screen->myNum,
|
||||
"i965", NULL);
|
||||
driDestroyOptionCache(&options);
|
||||
|
||||
screen->driScrnPriv = dri_screen;
|
||||
|
@@ -216,7 +216,7 @@ GLboolean r200CreateContext( gl_api api,
|
||||
* the default textures.
|
||||
*/
|
||||
driParseConfigFiles (&rmesa->radeon.optionCache, &screen->optionCache,
|
||||
screen->driScreen->myNum, "r200");
|
||||
screen->driScreen->myNum, "r200", NULL);
|
||||
rmesa->radeon.initialMaxAnisotropy = driQueryOptionf(&rmesa->radeon.optionCache,
|
||||
"def_max_anisotropy");
|
||||
|
||||
|
@@ -183,7 +183,7 @@ r100CreateContext( gl_api api,
|
||||
* the default textures.
|
||||
*/
|
||||
driParseConfigFiles (&rmesa->radeon.optionCache, &screen->optionCache,
|
||||
screen->driScreen->myNum, "radeon");
|
||||
screen->driScreen->myNum, "radeon", NULL);
|
||||
rmesa->radeon.initialMaxAnisotropy = driQueryOptionf(&rmesa->radeon.optionCache,
|
||||
"def_max_anisotropy");
|
||||
|
||||
|
@@ -691,6 +691,7 @@ struct OptConfData {
|
||||
driOptionCache *cache;
|
||||
int screenNum;
|
||||
const char *driverName, *execName;
|
||||
const char *kernelDriverName;
|
||||
uint32_t ignoringDevice;
|
||||
uint32_t ignoringApp;
|
||||
uint32_t inDriConf;
|
||||
@@ -715,14 +716,17 @@ static void
|
||||
parseDeviceAttr(struct OptConfData *data, const XML_Char **attr)
|
||||
{
|
||||
uint32_t i;
|
||||
const XML_Char *driver = NULL, *screen = NULL;
|
||||
const XML_Char *driver = NULL, *screen = NULL, *kernel = NULL;
|
||||
for (i = 0; attr[i]; i += 2) {
|
||||
if (!strcmp (attr[i], "driver")) driver = attr[i+1];
|
||||
else if (!strcmp (attr[i], "screen")) screen = attr[i+1];
|
||||
else if (!strcmp (attr[i], "kernel_driver")) kernel = attr[i+1];
|
||||
else XML_WARNING("unknown device attribute: %s.", attr[i]);
|
||||
}
|
||||
if (driver && strcmp (driver, data->driverName))
|
||||
data->ignoringDevice = data->inDevice;
|
||||
else if (kernel && (!data->kernelDriverName || strcmp (kernel, data->kernelDriverName)))
|
||||
data->ignoringDevice = data->inDevice;
|
||||
else if (screen) {
|
||||
driOptionValue screenNum;
|
||||
if (!parseValue (&screenNum, DRI_INT, screen))
|
||||
@@ -976,7 +980,8 @@ parseConfigDir(struct OptConfData *data, const char *dirname)
|
||||
|
||||
void
|
||||
driParseConfigFiles(driOptionCache *cache, const driOptionCache *info,
|
||||
int screenNum, const char *driverName)
|
||||
int screenNum, const char *driverName,
|
||||
const char *kernelDriverName)
|
||||
{
|
||||
char *home;
|
||||
struct OptConfData userData;
|
||||
@@ -986,6 +991,7 @@ driParseConfigFiles(driOptionCache *cache, const driOptionCache *info,
|
||||
userData.cache = cache;
|
||||
userData.screenNum = screenNum;
|
||||
userData.driverName = driverName;
|
||||
userData.kernelDriverName = kernelDriverName;
|
||||
userData.execName = util_get_process_name();
|
||||
|
||||
parseConfigDir(&userData, DATADIR "/drirc.d");
|
||||
|
@@ -102,10 +102,11 @@ void driParseOptionInfo (driOptionCache *info,
|
||||
const char *configOptions);
|
||||
/** \brief Initialize option cache from info and parse configuration files
|
||||
*
|
||||
* To be called in <driver>CreateContext. screenNum and driverName select
|
||||
* device sections. */
|
||||
* To be called in <driver>CreateContext. screenNum, driverName and
|
||||
* kernelDriverName select device sections. */
|
||||
void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info,
|
||||
int screenNum, const char *driverName);
|
||||
int screenNum, const char *driverName,
|
||||
const char *kernelDriverName);
|
||||
/** \brief Destroy option info
|
||||
*
|
||||
* To be called in <driver>DestroyScreen */
|
||||
|
Reference in New Issue
Block a user