QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1286|回复: 10

显卡配置工具

[复制链接]
发表于 2006-9-16 14:50:05 | 显示全部楼层 |阅读模式
利用了Xorg提供的parser库,配置文件的写入和读出绝对准确,不会出错。

显示器名称的probe利用的是ddc,可能在一小部分显示器上不稳定,可以通过
export
NXC_DISABLE_PROBE_MONITOR=1来disable.

显卡probe走的是xinf机制,在Magic上可能probe不出来,有兴趣的同志自己改一下吧。

关键是utils.cpp和nxc.cpp,他们不依赖任何东西,是配置文件和几个特殊功能的抽象,可复用。里面抽象了一对get set接口。utils提供了显卡probe以及modeline计算的函数。


本程序不是为了拿大家当白老鼠,是因为我们都还没有一个好用的配置工具。

redhat的system-config-display用的是pyxf86config,调用的也是Xorg的parser库。

yast的配置工具也是。

所以,我们需要一个KDE的。

愿用就用,愿意怎么改就怎么改吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-9-16 15:00:55 | 显示全部楼层
     cjacker出品必属精品
回复

使用道具 举报

 楼主| 发表于 2006-9-16 15:09:23 | 显示全部楼层

Re: 显卡配置工具

[quote:7901c37cf2="cjacker"]利用了Xorg提供的parser库,配置文件的写入和读出绝对准确,不会出错。

显示器名称的probe利用的是ddc,可能在一小部分显示器上不稳定,可以通过
export
NXC_DISABLE_PROBE_MONITOR=1来disable.

显卡probe走的是xinf机制,在Magic上可能probe不出来,有兴趣的同志自己改一下吧。(我会在有机会的时候push一下xorg,显卡驱动明明知道自己支持的硬件列表,为什么没有个接口直接告诉我们,这样probe就更加准确了)

关键是utils.cpp和nxc.cpp,他们不依赖任何东西,是配置文件和几个特殊功能的抽象,可复用。里面抽象了一对get set接口。utils提供了显卡probe以及modeline计算的函数。


本程序不是为了拿大家当白老鼠,是因为我们都还没有一个好用的配置工具。

redhat的system-config-display用的是pyxf86config,调用的也是Xorg的parser库。

yast的配置工具也是。

所以,我们需要一个KDE的。

愿用就用,愿意怎么改就怎么改吧。[/quote]
回复

使用道具 举报

发表于 2006-9-18 21:07:28 | 显示全部楼层
我也来顶一下。

不过现在的ml2.0开发组好像不怎么在意这个东西。
回复

使用道具 举报

发表于 2006-9-18 21:29:04 | 显示全部楼层
在ml上编译需要改几处,而且无法正常运行.可能还有需要修改的地方.
等等看吧.
回复

使用道具 举报

发表于 2006-9-19 10:37:14 | 显示全部楼层
很好,还没细看,因为打不开rpm的包,等会装个,rpm解包的工具。不知版权和使用上有什么要求。
回复

使用道具 举报

发表于 2006-9-19 17:50:31 | 显示全部楼层
希望各位大大能在除虫后发布到仓库,方便大家!
回复

使用道具 举报

发表于 2006-9-19 22:19:47 | 显示全部楼层
To cjacker,
请教一下:
我编译的时候
utils.cpp的121行和192行有错误:
utils.cpp:121: 错误:‘PCI_FILL_CLASS’ 在此作用域中尚未声明
utils.cpp:192: 错误:‘struct pci_dev’ 没有名为 ‘device_class’ 的成员
我估计是include的pci.h有问题,我系统里的和你的不一样。
现在发现系统里有很多个pci.h,不知道你想引用的应该是哪个

我知道应该是Makefile.in里定义的
includedir = @includedir@
制定的@includedir@所具体表示的目录里面的pci.h
但我如何确定@includedir@应该取什么样的值?

象这种情况,我的编译器会用哪一个呢?
[root@206studio ~]# locate pci.h | grep /pci.h
/usr/include/linux/pci.h
/usr/include/sys/pci.h
/usr/include/pci/pci.h
/usr/lib/klibc/include/linux/pci.h
/usr/lib/klibc/include/asm-i386/pci.h
/usr/lib/klibc/include/asm-generic/pci.h
/usr/src/linux-2.6.17-ARCH/include/linux/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/blk/dev/idedma/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/net/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/hisax/hfc/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/hisax/enternow/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/pci.h
/usr/src/linux-2.6.17-ARCH/include/config/serial/8250/pci.h
/usr/src/linux-2.6.17-ARCH/include/asm-i386/pci.h
/usr/src/linux-2.6.17-ARCH/include/asm-generic/pci.h
回复

使用道具 举报

发表于 2006-9-19 22:48:51 | 显示全部楼层
我从手册查看到,PCI_LIB里有定义:
int pci_fill_info(struct pci_dev *, int flags);
但没有常量 PCI_FILL_CLASS 的值

PCI_FILL_IDENT | PCI_FILL_CLASS | PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES
其实就是个常数,这个常数如何确定?
回复

使用道具 举报

发表于 2006-9-19 23:12:04 | 显示全部楼层
我的pci_dev的数据结构

struct pci_dev {
  struct pci_dev *next;                        /* Next device in the chain */
  u16 domain;                                /* PCI domain (host bridge) */
  u8 bus, dev, func;                        /* Bus inside domain, device and function */

  /* These fields are set by pci_fill_info() */
  int known_fields;                        /* Set of info fields already known */
  u16 vendor_id, device_id;                /* Identity of the device */
  int irq;                                /* IRQ number */
  pciaddr_t base_addr[6];                /* Base addresses */
  pciaddr_t size[6];                        /* Region sizes */
  pciaddr_t rom_base_addr;                /* Expansion ROM base address */
  pciaddr_t rom_size;                        /* Expansion ROM size */

  /* Fields used internally: */
  struct pci_access *access;
  struct pci_methods *methods;
  u8 *cache;                                /* Cached config registers */
  int cache_len;
  int hdrtype;                                /* Cached low 7 bits of header type, -1 if unknown */
  void *aux;                                /* Auxillary data */
};

你的 p->device_class
应该相当于我这里的
p->vendor_id, p->device_id  (都是u16的数据类型)
的某种组合
但我不知道你那里device_class的长度和数据类型。
回复

使用道具 举报

发表于 2006-9-19 23:25:48 | 显示全部楼层
下面是修改过的utils.cpp

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 10:45 , Processed in 0.038614 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表