如何在Ubuntu上使用Mesa 10.1启用OpenGL 3.3

前端之家收集整理的这篇文章主要介绍了如何在Ubuntu上使用Mesa 10.1启用OpenGL 3.3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图得到一个依赖OpenGL 3.3和GLSL 3.3的基于OpenGL的渲染引擎,使用AMD Radeon 6950在Ubuntu 13.10上运行.我想使用开源驱动程序(radeon),它依赖于Mesa来实现OpenGL . Ubuntu 13.10仅提供“开箱即用”的Mesa 9.2(实现OpenGL 3.1).但是,可以从 @L_403_0@安装Mesa 10.1(实现OpenGL 3.3),如本主题所述:

StackOverflow:OpenGL & GLSL 3.3 on an HD Graphics 4000 under Ubuntu 12.04

我使用了与那里解释完全相同的步骤:

  1. 1.) Add the PPA Repository
  2. $sudo add-apt-repository ppa:oibaf/graphics-drivers
  3. 2.) Update sources
  4. $sudo apt-get update
  5. 3.) Dist-upgrade (rebuilds many packages)
  6. $sudo apt-get dist-upgrade
  7. 4.) Then I rebooted.

Mesa 10.1已成功安装.但是,glxinfo虽然现在报告Mesa 10.1正在使用,但仍然只报告OpenGL 3.0(compat profile)和OpenGL 3.1(核心配置文件):

  1. $glxinfo | grep OpenGL
  2. OpenGL vendor string: X.Org
  3. OpenGL renderer string: Gallium 0.4 on AMD CAYMAN
  4. OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.1.0-devel (git-7f57408 saucy-oibaf-ppa+curaga)
  5. OpenGL core profile shading language version string: 1.40
  6. OpenGL core profile context flags: (none)
  7. OpenGL core profile extensions:
  8. OpenGL version string: 3.0 Mesa 10.1.0-devel (git-7f57408 saucy-oibaf-ppa+curaga)
  9. OpenGL shading language version string: 1.30
  10. OpenGL context flags: (none)
  11. OpenGL extensions:

这是为什么?如何启用OpenGL 3.3?从我在the StackOverflow thread中提到的比较可以看出,glxinfo报告OpenGL 3.3是可能的.我知道glxinfo可能会报告错误的版本号,因为the Mesa 10.1 Release Notes,但我试图运行的渲染引擎因此而失败.

我使用以下代码生成一个窗口:

  1. glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR,3);
  2. glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR,3);
  3. glfwOpenWindowHint(GLFW_OPENGL_PROFILE,0);
  4.  
  5. if(GL_TRUE != glfwOpenWindow(
  6. _windowDimensions.x,_windowDimensions.y,32,GLFW_WINDOW))
  7. {
  8. THROW("GLFW error: Failed to create window.");
  9. }

当我尝试使用此设置运行渲染引擎时,由于不支持OpenGL 3.3,因此抛出上述异常.我可以将GLFW_OPENGL_VERSION_MINOR设置为0,然后窗口打开正常,但稍后将抛出异常,因为需要GLSL 3.3着色器.

还要注意,当我使用专有的fglrx驱动程序(然后glxinfo报告OpenGL版本4.2)时,渲染引擎运行正常,因此应用程序本身确实不是问题,但支持的OpenGL是.

那么我做错了什么?为什么Mesa 10.1不支持OpenGL 3.3?我的显卡当然支持它.

这里有一些可能有用的附加信息.

  1. $apt-cache policy libgl1-mesa-glx
  2. libgl1-mesa-glx:
  3. Installed: 10.1~git1402041945.7f5740+curaga~gd~s
  4. Candidate: 10.1~git1402041945.7f5740+curaga~gd~s
  5. Version table:
  6. *** 10.1~git1402041945.7f5740+curaga~gd~s 0
  7. 500 http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu/ saucy/main amd64 Packages
  8. 100 /var/lib/dpkg/status
  9. 9.2.1-1ubuntu3 0
  10. 500 http://archive.ubuntu.com/ubuntu/ saucy/main amd64 Packages
  11.  
  12.  
  13. $lspci -vv
  14. ...snip...
  15. 01:00.0 VGA compatible controller: Advanced Micro Devices,Inc. [AMD/ATI] Cayman PRO [Radeon HD 6950] (prog-if 00 [VGA controller])
  16. Subsystem: Hightech Information System Ltd. Device 2307
  17. Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
  18. Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
  19. Latency: 0,Cache Line Size: 64 bytes
  20. Interrupt: pin A routed to IRQ 53
  21. Region 0: Memory at c0000000 (64-bit,prefetchable) [size=256M]
  22. Region 2: Memory at fe620000 (64-bit,non-prefetchable) [size=128K]
  23. Region 4: I/O ports at e000 [size=256]
  24. Expansion ROM at fe600000 [disabled] [size=128K]
  25. Capabilities: <access denied>
  26. Kernel driver in use: radeon
  27. ...snip...
  28.  
  29.  
  30. $lsmod | egrep 'radeon|fglrx'
  31. radeon 1402995 3
  32. i2c_algo_bit 13413 1 radeon
  33. ttm 84169 1 radeon
  34. drm_kms_helper 52710 1 radeon
  35. drm 297056 5 ttm,drm_kms_helper,radeon
  36.  
  37.  
  38. $modinfo radeon
  39. filename: /lib/modules/3.11.0-15-generic/kernel/drivers/gpu/drm/radeon/radeon.ko
  40. license: GPL and additional rights
  41. description: ATI Radeon
  42. author: Gareth Hughes,Keith Whitwell,others.
  43. ...snip...
  44. firmware: radeon/CAYMAN_smc.bin
  45. firmware: radeon/CAYMAN_rlc.bin
  46. firmware: radeon/CAYMAN_mc.bin
  47. firmware: radeon/CAYMAN_me.bin
  48. firmware: radeon/CAYMAN_pfp.bin
  49. ...snip...
  50. srcversion: D174B1E4686391B33437915
  51. alias: pci:v00001002d000099A4sv*sd*bc*sc*i*
  52. alias: pci:v00001002d000099A2sv*sd*bc*sc*i*
  53. ...snip...
  54. depends: drm,ttm,i2c-algo-bit
  55. intree: Y
  56. vermagic: 3.11.0-15-generic SMP mod_unload modversions
  57. parm: no_wb:Disable AGP writeback for scratch registers (int)
  58. parm: modeset:Disable/Enable modesetting (int)
  59. parm: dynclks:Disable/Enable dynamic clocks (int)
  60. parm: r4xx_atom:Enable ATOMBIOS modesetting for R4xx (int)
  61. parm: vramlimit:Restrict VRAM for testing (int)
  62. parm: agpmode:AGP Mode (-1 == PCI) (int)
  63. parm: gartsize:Size of PCIE/IGP gart to setup in megabytes (32,64,etc) (int)
  64. parm: benchmark:Run benchmark (int)
  65. parm: test:Run tests (int)
  66. parm: connector_table:Force connector table (int)
  67. parm: tv:TV enable (0 = disable) (int)
  68. parm: audio:Audio enable (1 = enable) (int)
  69. parm: disp_priority:Display Priority (0 = auto,1 = normal,2 = high) (int)
  70. parm: hw_i2c:hw i2c engine enable (0 = disable) (int)
  71. parm: pcie_gen2:PCIE Gen2 mode (-1 = auto,0 = disable,1 = enable) (int)
  72. parm: msi:MSI support (1 = enable,-1 = auto) (int)
  73. parm: lockup_timeout:GPU lockup timeout in ms (defaul 10000 = 10 seconds,0 = disable) (int)
  74. parm: fastfb:Direct FB access for IGP chips (0 = disable,1 = enable) (int)
  75. parm: dpm:DPM support (1 = enable,-1 = auto) (int)
  76. parm: aspm:ASPM support (1 = enable,-1 = auto) (int)
  77.  
  78.  
  79. $dpkg -S /lib/modules/3.11.0-15-generic/kernel/drivers/gpu/drm/radeon/radeon.ko
  80. linux-image-extra-3.11.0-15-generic: /lib/modules/3.11.0-15-generic/kernel/drivers/gpu/drm/radeon/radeon.ko
  81.  
  82.  
  83. $apt-cache policy linux-image-extra-3.11.0-15-generic
  84. linux-image-extra-3.11.0-15-generic:
  85. Installed: 3.11.0-15.25
  86. Candidate: 3.11.0-15.25
  87. Version table:
  88. *** 3.11.0-15.25 0
  89. 500 http://archive.ubuntu.com/ubuntu/ saucy-updates/main amd64 Packages
  90. 500 http://archive.ubuntu.com/ubuntu/ saucy-security/main amd64 Packages
  91. 100 /var/lib/dpkg/status
他们没有告诉你,但间接暗示(“有些驱动程序不支持OpenGL 3.3中所需的所有功能.”),在Mesa(10.0)的最后一个正式版本中,GL 3.3仅适用于Intel硬件.这是英特尔与Mesa项目密切合作的乐趣之一.如果您想在AMD硬件上以任何形式获得可靠的GL 3.3支持,您应该暂时使用fglrx(专有的AMD驱动程序).

Mesa 10.1的开发版可能会在radeon驱动程序上实现GL 3.3,但您需要请求3.3核心配置文件.你目前没有这样做.

这个:

  1. glfwOpenWindowHint(GLFW_OPENGL_PROFILE,0);

实际上需要这样:

  1. glfwOpenWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);

此外,没有GL 3.0兼容性配置文件或3.1核心配置文件.直到3.2之前,配置文件才被引入OpenGL. GL 3.1中有GL_ARB_compatibility的概念,但这与概要文件不同; glxinfo正在提供误导性信息.

猜你在找的Ubuntu相关文章