# 3D Support?



## Draucia (Apr 17, 2012)

Sorry I'm new to FreeBSD, but how do I tell if I have 3D support? Whenever I run glxgears, I get:


```
Failed to initialize GEM.  Falling back to classic.
```

Does this mean I don't have 3D support?

Here is the output of glxinfo:


```
name of display: :0
Failed to initialize GEM.  Falling back to classic.
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method, 
    GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe, 
    GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_MESA_copy_sub_buffer
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory, 
    GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control, 
    GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method, 
    GLX_SGI_make_current_read, GLX_SGI_video_sync, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Mobile IntelÃ‚Â® GM45 Express Chipset 20090418 2009Q1
OpenGL version string: 2.0 Mesa 7.4.4
OpenGL shading language version string: 1.10
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program, 
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, 
    GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, 
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects, 
    GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_texture_border_clamp, 
    GL_ARB_texture_compression, GL_ARB_texture_cube_map, 
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
    GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
    GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two, 
    GL_ARB_texture_rectangle, GL_ARB_transpose_matrix, 
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, 
    GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
    GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract, 
    GL_EXT_clip_volume_hint, GL_EXT_cull_vertex, GL_EXT_compiled_vertex_array, 
    GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_fog_coord, 
    GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, 
    GL_EXT_packed_pixels, GL_EXT_point_parameters, GL_EXT_polygon_offset, 
    GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, 
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias, 
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, 
    GL_EXT_vertex_array, GL_3DFX_texture_compression_FXT1, 
    GL_APPLE_client_storage, GL_APPLE_packed_pixels, 
    GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3, 
    GL_ATI_separate_stencil, GL_IBM_rasterpos_clip, 
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, 
    GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos, 
    GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_point_sprite, 
    GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program, 
    GL_NV_vertex_program1_1, GL_OES_read_format, GL_SGIS_generate_mipmap, 
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, 
    GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SUN_multi_draw_arrays

16 GLX Visuals
   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x21 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x22 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0xfa 24 tc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0xfb 24 tc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0xfc 24 tc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0xfd 24 tc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x105 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x106 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x107 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x118 24 dc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x119 24 dc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x11a 24 dc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x11b 24 dc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x124 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x125 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x126 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow

16 GLXFBConfigs:
   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x9a  0 tc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x9b  0 tc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x9c  0 tc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x9d  0 tc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0xa6  0 tc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0xa7  0 tc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0xa8  0 tc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0xa9  0 tc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0xda  0 dc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0xdb  0 dc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0xdc  0 dc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0xdd  0 dc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0xe6  0 dc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0xe7  0 dc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0xe8  0 dc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0xe9  0 dc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
```


----------



## adamk (Apr 17, 2012)

```
OpenGL renderer string: Mesa DRI Mobile IntelÃ‚Â® GM45 Express Chipset 20090418 2009Q1
```

And


```
direct rendering: Yes
```

Those two items, combined, show that you have 3D acceleration.

GEM is a memory manager for the intel drivers that has been developed on Linux.  It is in the process of being ported to FreeBSD, and there are patches available if you are interested.  It is necessary for even basic 2D functionality on newer intel GPUs.


----------



## Draucia (Apr 18, 2012)

adamk said:
			
		

> ```
> OpenGL renderer string: Mesa DRI Mobile IntelÃ‚Â® GM45 Express Chipset 20090418 2009Q1
> ```
> 
> ...



Thanks. It's just that I have very low performance on some games on here compared to windows (around 18 FPS vs around 30 FPS). Do you know if GEM will help me get better performance on the Intel GM45?


----------



## adamk (Apr 18, 2012)

It *might*, but I doubt the difference will be that great.  What games have you tried?

Adam


----------



## Draucia (Apr 18, 2012)

adamk said:
			
		

> It *might*, but I doubt the difference will be that great.  What games have you tried?
> 
> Adam



I've tried Heroes of Newerth (only on linux though, can't seem to get it to run on FreeBSD) and openarena. Can you direct me to these patches?


----------



## adamk (Apr 18, 2012)

http://miwi.bsdcrew.de/2012/02/cft-xorg-upgrade-7-5-2/

I'd highly recommend subscribing to the freebsd-x11 mailing list.  They will be more likely to be able to answer any questions about problems you might have.


----------



## Draucia (Apr 19, 2012)

adamk said:
			
		

> http://miwi.bsdcrew.de/2012/02/cft-xorg-upgrade-7-5-2/
> 
> I'd highly recommend subscribing to the freebsd-x11 mailing list.  They will be more likely to be able to answer any questions about problems you might have.



I haven't installed the patches, but after I did:


```
export LD_PREOAD=/usr/local/lib/libGL.so.1
```

Hon (heroes of newerth) launches! The only problem is, it takes about 3 minutes to launch, and it runs incredibly slowly (Seems like it's 1 FPS, takes about 3 mins to get to login menu). Could this be because it's like using software rendering as a fallback? (The "Failed to initialize GEM.  Falling back to classic." message comes to my mind).

Hon crashlog shows:


```
Signal: Segmentation fault

Backtrace:
./hon-x86 [0x8050ccc]
[0xffffe087]
/usr/lib/libdrm.so.2(drmGetVersion+0xf7) [0x51980e17]
/usr/lib/libdrm.so.2(drmAvailable+0x3d) [0x5198137d]
/usr/lib/libdrm.so.2(drmOpen+0x25) [0x519819d5]
/usr/lib/libdrm.so.2(drmOpenOnce+0x8a) [0x51981ada]
/usr/lib/libGL.so.1 [0x518c4642]
/usr/lib/libGL.so.1 [0x518a38fb]
/usr/lib/libGL.so.1(glXQueryVersion+0x2b) [0x5189f14b]
/usr/home/draucia/hon/vid_gl2-x86.so [0x517d71b0]
```

Note I'm a total noob at this 3d stuff, but could drmopenonce be related to this in my xorg log?


```
(==) Depth 24 pixmap format is 32 bpp
(II) intel(0): Kernel reported 1006592 total, 0 used
(II) intel(0): I830CheckAvailableMemory: 4026368 kB available
(WW) intel(0): DRI2 requires UXA
drmOpenDevice: node name is /dev/dri/card0
Failed to change owner or group for file /dev/dri! 2: No such file or directory
Failed to change owner or group for file /dev/dri/card0! 2: No such file or directory
drmOpenDevice: open result is -1, (No such file or directory)
Failed to change owner or group for file /dev/dri/card0! 2: No such file or directory
drmOpenDevice: open result is -1, (No such file or directory)
drmOpenDevice: Open failed
drmOpenDevice: node name is /dev/dri/card0
Failed to change owner or group for file /dev/dri! 2: No such file or directory
Failed to change owner or group for file /dev/dri/card0! 2: No such file or directory
drmOpenDevice: open result is -1, (No such file or directory)
Failed to change owner or group for file /dev/dri/card0! 2: No such file or directory
drmOpenDevice: open result is -1, (No such file or directory)
drmOpenDevice: Open failed
drmOpenByBusid: Searching for BusID pci:0000:00:02.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 11, (OK)
drmOpenByBusid: drmOpenMinor returns 11
drmOpenByBusid: drmGetBusid reports pci:0000:00:02.0
(II) [drm] loaded kernel module for "i915" driver.
(II) [drm] DRM interface version 1.2
(II) [drm] DRM open master succeeded.
(II) intel(0): [drm] Using the DRM lock SAREA also for drawables.
(II) intel(0): [drm] framebuffer mapped by ddx driver
(II) intel(0): [drm] added 1 reserved context for kernel
(II) intel(0): X context handle = 0x1
(II) intel(0): [drm] installed DRM signal handler
(**) intel(0): Framebuffer compression enabled
(**) intel(0): Tiling enabled
(==) intel(0): VideoRam: 262144 KB
(II) intel(0): Attempting memory allocation with tiled buffers.
(II) intel(0): Tiled allocation successful.
(II) intel(0): [drm] Registers = 0x00000000
(II) intel(0): [drm] ring buffer = 0x00000000
(II) intel(0): [drm] mapped front buffer at 0xc08a0000, handle = 0x00000000
(II) intel(0): [drm] mapped back buffer at 0xc25fb000, handle = 0x00000000
(II) intel(0): [drm] mapped depth buffer at 0xc2d5f000, handle = 0x00000000
(II) intel(0): [drm] mapped classic textures at 0xc34c3000, handle = 0x00000000
(II) intel(0): [drm] Initialized kernel agp heap manager, 33554432
(II) intel(0): [dri] visual configs initialized
(II) intel(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(==) intel(0): Write-combining range (0xa0000,0x10000) was already clear
(II) EXA(0): Offscreen pixmap area of 23080960 bytes
(II) EXA(0): Driver registered support for the following operations:
(II)         Solid
(II)         Copy
(II)         Composite (RENDER acceleration)
```

And the wine error:


```
err:winediag:X11DRV_WineGL_InitOpenglInfo Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly
err:ntlm:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path.
err:ntlm:SECUR32_initNTLMSP Usually, you can find it in the winbind package of your distribution.
```


----------



## adamk (Apr 19, 2012)

It's almost certainly falling back to software rendering, but not because of the lack of GEM.  HoN is a linux game, and you need the linux 3D drivers for your GPU installed.  Make sure the graphics/linux-f10-dri port is installed.  Even then, I do not know if that version of Mesa will be new enough to support your GPU or how well HoN will perform.

And, of course, if you are doing this on an amd64 installation, forget it.  None of the open source drivers support 3D direct rendering in 32-bit apps (either FreeBSD or Linux) on amd64 installs.  I'm also pretty sure no one is actively working on fixing that limitation.

Adam


----------



## Draucia (Apr 19, 2012)

adamk said:
			
		

> It's almost certainly falling back to software rendering, but not because of the lack of GEM.  HoN is a linux game, and you need the linux 3D drivers for your GPU installed.  Make sure the graphics/linux-f10-dri port is installed.  Even then, I do not know if that version of Mesa will be new enough to support your GPU or how well HoN will perform.
> 
> And, of course, if you are doing this on an amd64 installation, forget it.  None of the open source drivers support 3D direct rendering in 32-bit apps (either FreeBSD or Linux) on amd64 installs.  I'm also pretty sure no one is actively working on fixing that limitation.
> 
> Adam



I have linux-f10-dri installed. I've always noticed worse 3D performance with my GPU on linux (and FreeBSD) than on windows. Too bad, I'm doing this on amd64. D:

Should this be marked as solved or not lol? [Give up]? XD


----------

