2011-04-16 207 views
0

我编译的Xorg是为我为ARM设备构建的自定义Linux编译的。我试图运行使用EGL与Qt框架OpenGL应用程序,但我得到这些错误:运行OpenGL应用程序时出现X11错误BadRequest

X Error: BadRequest (invalid request code or no such operation) 1 
Extension: 198 (Uknown extension) 
Minor opcode: 0 (Unknown request) 
Resource id: 0x600082 

这:

X Error: BadRequest (invalid request code or no such operation) 1 
Extension: 160 (Uknown extension) 
Minor opcode: 0 (Unknown request) 
Resource id: 0x600082 

重复多次。这是什么意思?我怎样才能调查什么是错的?用OpenGL正确地在屏幕上绘制了一些东西,但之后一切都搞砸了。 在我的Xorg中似乎缺少某些东西,但我无法找到有关这些扩展198和160的任何信息。如何找出遗漏的东西或反正出了什么问题?我是否需要编译任何特定的代码才能运行X11的OpenGL应用程序? 谢谢!

回答

2

扩展号由X服务器根据特定代码库中支持的扩展名动态分配,并在特定配置中启用。要在当前显示屏上获得扩展名到数字映射的列表,您可以运行xdpyinfo -queryExtensions | grep opcode - 每个列出的操作码值应与Xlib错误报告中的扩展名相匹配。如果没有任何扩展名匹配,那么看起来您可能已经损坏了内存或正在调用扩展程序,而没有先验证它在X服务器中当前是否可用。

+0

这非常有用!谢谢!并且在任何地方都有它们的操作码的所有扩展名列表?为什么我可以试着了解可能缺少的内容? – 2011-04-19 07:27:23

+0

请重新阅读我给的答案。由于正如我所说,操作码是*动态分配*,所以不能有扩展名列表。渲染扩展可能在我的X服务器上有132个操作码,在你的140上,取决于扩展初始化的顺序以及哪些被初始化或被禁用。 – alanc 2011-04-20 15:30:30

+0

你说得对,对不起。你的回答很明确。无论如何,我可能已经通过重新编译Qt来解决了这个问题,支持几乎所有的X扩展,然后为X显式启用多线程。看起来应用程序在主线程之外使用OpenGL。现在问题似乎解决了。我不知道这两项行动是否是强制性的。谢谢你的帮助! – 2011-04-20 18:34:53

相关问题