[Solved] [LINUX] ATI Radeon 2xxx and higher problems

For discussion of ports to POSIX based systems, especially using GNUStep.

Moderators: winston, another_commander, Getafix

Post Reply
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

[Solved] [LINUX] ATI Radeon 2xxx and higher problems

Post by Lone_Wolf »

Archlinux now has upgraded mesa to 7.10.1 , and this means the driver for ati R600 cards ( HD 2xxxx and later) is changed from classic mesa to gallium3D.

according to The Direction Of ATI Radeon Graphics In Ubuntu 11.04 on phoronix, Ubunty 11.04 Natty will also use the gallium3d driver in mesa 7.10 r600 cards.

The current state of the gallium driver breaks oolite, it hangs on the logo screen and can only be killed.

By changing shader-mode in gnustep.defaults from 3 to 0 , oolite can start , but is very unstable.

I will continue to look into this, and also try out the mesa 7.11 development version.
Last edited by Getafix on Sun Aug 19, 2012 10:35 am, edited 2 times in total.
Reason: Tagged as solved.
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

I have looked into this deeper (even compiled mesa myself), and have now found 2 solutions .

1. downgrade mesa to the highest version for your distro that still uses the r600 classic driver.
For ubuntu this will likely be the version supplied with 10.10

oolite also runs fine with mesa 7.10 as compiled for archlinux.

2.
start oolite from a terminal with this command :

Code: Select all

LIBGL_ALWAYS_INDIRECT=1 oolite
you will loose all shader functions, but oolite does run stable.
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Ati Radeon 2xxxx and higher problems coming

Post by JensAyton »

Lone_Wolf wrote:
By changing shader-mode in gnustep.defaults from 3 to 0 , oolite can start , but is very unstable.
This is a long shot, but:
  • Try setting it to 1 (SHADERS_OFF) instead of 0 (SHADERS_NOT_SUPPORTED).
  • Try adding an entry to gpu-config.plist with maximum_shader_level = SHADERS_OFF;.
I do have an HD 2400 system to test on, but it doesn’t have a standalone Linux install. I’ll try to get around to fiddling with 11.04 alpha.
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

changing shader-mode to 1 in .GNUstepDefaults makes oolite run fine .
with shader-mode 2 and 3 oolite hangs on the icon screen, taking full cpu of 1 core.

adding the section below to gpu-settings.plist makes oolite run stable without shaders regardless of shader-mode value in .GNUstepDefaults
Note : AMD RV770 is the chipset used in my videocard, a HD 4890 .

Code: Select all

	"ATI R600 family (X/Gallium3D)" =
	{
		match =
		{
			vendor = "X.Org";
			renderer = "Gallium .* on AMD RV770";
		};
		maximum_shader_level = "SHADERS_OFF";
		default_shader_level = "SHADERS_OFF";

	};
top of log file :

Code: Select all

14:55:26.681 [log.header]: Opening log for Oolite version 1.75.1 (x86-64 test release) under Linux at 2011-03-15 14:55:26 +0100.
8 processors detected.
Build options: spoken messages, mass/fuel pricing, JavaScript console support, OXP verifier, localization tools, debug GraphViz support, JavaScript profiling.

Note that the contents of the log file can be adjusted by editing logcontrol.plist.

14:55:26.791 [display.mode.list.native]: X11 native resolution detected: 1920 x 1200
14:55:26.892 [joystick.init]: Number of joysticks detected: 1
14:55:26.933 [dataCache.notFound]: No data cache found, starting from scratch.
14:55:26.935 [searchPaths.dumpAll]: Unrestricted mode - resource paths:
    /usr/share/oolite.app/Resources
    ~/.Oolite/AddOns
    ~/.Oolite/AddOns/Target Autolock Plus 1.12.oxp
    ~/.Oolite/AddOns/Welcome Mat 1.11.oxp
    ~/.Oolite/AddOns/Famous_Planets_v2.5.oxp
    ~/.Oolite/AddOns/wolfwoods_variants.oxp
    ~/.Oolite/AddOns/RepairBots 2.01.oxp
    ~/.Oolite/AddOns/MilHUD-v3.4.oxp
    ~/.Oolite/AddOns/x-ships.oxp
    ~/.Oolite/AddOns/werewolf.oxp
    ~/.Oolite/AddOns/IronHide 2.00.oxp
    ~/.Oolite/AddOns/tiger.oxp
    ~/.Oolite/AddOns/Fuel Tank v2.2.oxp
    ~/.Oolite/AddOns/Python Class Cruiser 2.6.oxp
    ~/.Oolite/AddOns/accessories.oxp
    ~/.Oolite/AddOns/The Feudal States v1.9.5.oxp
    ~/.Oolite/AddOns/PlanetFall 1.41.oxp
    ~/.Oolite/AddOns/RandomHits1.4.8.oxp
    ~/.Oolite/AddOns/supercobra 1.4.2.oxp
    ~/.Oolite/AddOns/BGS-A1.3.2.oxp
    ~/.Oolite/AddOns/impcourier2.oxp
    ~/.Oolite/AddOns/griff_shipset_dizzy's_all_in_1.oxp
14:55:26.936 [rendering.opengl.version]: OpenGL renderer version: 2.1.0 ("2.1 Mesa 7.10.1"). Vendor: "X.Org". Renderer: "Gallium 0.4 on AMD RV770".
14:55:26.936 [rendering.opengl.extensions]: OpenGL extensions (117):
GL_EXT_abgr, GL_ARB_texture_env_crossbar, GL_EXT_texture, GL_ARB_shadow, GL_IBM_texture_mirrored_repeat, GL_EXT_texture_edge_clamp, GL_EXT_separate_specular_color, GL_EXT_blend_minmax, GL_EXT_texture_object, GL_EXT_draw_buffers2, GL_ARB_texture_env_add, GL_INGR_blend_func_separate, GL_NV_texture_env_combine4, GL_EXT_texture_cube_map, GL_EXT_blend_logic_op, GL_ARB_draw_elements_base_vertex, GL_EXT_texture_env_dot3, GL_IBM_rasterpos_clip, GL_EXT_framebuffer_blit, GL_ARB_texture_env_dot3, GL_NV_light_max_exponent, GL_EXT_framebuffer_object, GL_EXT_blend_subtract, GL_EXT_copy_texture, GL_EXT_separate_shader_objects, GL_MESA_window_pos, GL_ATI_texture_mirror_once, GL_ARB_vertex_array_bgra, GL_ARB_multitexture, GL_EXT_stencil_wrap, GL_ARB_texture_border_clamp, GL_NV_depth_clamp, GL_ARB_texture_env_combine, GL_EXT_framebuffer_multisample, GL_SGIS_texture_edge_clamp, GL_EXT_texture_env_add, GL_EXT_packed_pixels, GL_ARB_depth_clamp, GL_SGIS_texture_lod, GL_ARB_depth_texture, GL_ARB_transpose_matrix, GL_ARB_occlusion_query, GL_NV_texgen_reflection, GL_NV_packed_depth_stencil, GL_EXT_stencil_two_side, GL_ARB_shading_language_100, GL_ARB_fragment_program_shadow, GL_OES_EGL_image, GL_EXT_rescale_normal, GL_EXT_gpu_program_parameters, GL_ARB_map_buffer_range, GL_ARB_provoking_vertex, GL_ARB_pixel_buffer_object, GL_ARB_explicit_attrib_location, GL_EXT_secondary_color, GL_SUN_multi_draw_arrays, GL_OES_read_format, GL_ARB_texture_mirrored_repeat, GL_ARB_copy_buffer, GL_EXT_vertex_array_bgra, GL_EXT_polygon_offset, GL_EXT_draw_range_elements, GL_EXT_blend_equation_separate, GL_EXT_texture_lod_bias, GL_EXT_texture_filter_anisotropic, GL_ARB_half_float_vertex, GL_EXT_texture_swizzle, GL_SGIS_texture_border_clamp, GL_SGIS_generate_mipmap, GL_NV_texture_rectangle, GL_ARB_texture_rectangle, GL_ARB_texture_non_power_of_two, GL_ARB_point_sprite, GL_ARB_texture_swizzle, GL_EXT_packed_depth_stencil, GL_ARB_vertex_shader, GL_ARB_vertex_buffer_object, GL_ARB_shader_objects, GL_EXT_texture_mirror_clamp, GL_EXT_provoking_vertex, GL_IBM_multimode_draw_arrays, GL_ARB_shader_stencil_export, GL_ATI_separate_stencil, GL_ARB_framebuffer_object, GL_EXT_texture_rectangle, GL_ARB_texture_rg, GL_ARB_fragment_shader, GL_EXT_texture3D, GL_EXT_fog_coord, GL_EXT_subtexture, GL_ARB_window_pos, GL_EXT_point_parameters, GL_ARB_fragment_program, GL_EXT_texture_env_combine, GL_ARB_vertex_program, GL_EXT_compiled_vertex_array, GL_EXT_bgra, GL_ARB_texture_cube_map, GL_ARB_point_parameters, GL_EXT_vertex_array, GL_ARB_multisample, GL_ARB_vertex_array_object, GL_ARB_draw_buffers, GL_EXT_multi_draw_arrays, GL_ARB_texture_compression, GL_APPLE_vertex_array_object, GL_ARB_fragment_coord_conventions, GL_ATI_texture_env_combine3, GL_APPLE_packed_pixels, GL_EXT_blend_func_separate, GL_MESA_pack_invert, GL_EXT_texture_sRGB, GL_EXT_shadow_funcs, GL_ATI_blend_equation_separate, GL_EXT_blend_color, GL_NV_blend_square, GL_EXT_pixel_buffer_object
14:55:26.943 [script.javaScript.willLoad]: About to load JavaScript /usr/share/oolite.app/Resources/Scripts/oolite-global-prefix.js
  14:55:26.943 [script.javaScript.load.success]: Loaded JavaScript: oolite-global-prefix 1.75.1 -- (no description)
14:55:26.944 [rendering.opengl.gpuSpecific]: Matched GPU configuration "ATI R600 family (X/Gallium3D)".
14:55:26.944 [rendering.opengl.shader.support]: Shaders will not be used (disallowed for GPU type "Gallium 0.4 on AMD RV770").
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Ati Radeon 2xxxx and higher problems coming

Post by JensAyton »

I’ve checked in a corresponding gpu-config fix for now.
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

At first i thought the problems were due to the gallium 0.4 driver lacking features the classic driver did have, but a search for similar problems with other OpenGL applications was unsuccesfull.
I then compared the glxinfo output for both drivers, and found the gallium driver does support GLSL 1.2, and even has more OpenGL extensions then the classic driver.

so i did some more testing, using oolite 1.75.1 without any references to r600 gallium in gpu-settings.plist .
I tested with and without oxps, fullscreen and in window.
Once oolite had started, i choose NOT to load a commander, F2 > game options and tried to change the shader from none to simple.

In 1 case i got additional info in latest.log :

Code: Select all

  13:56:41.403 [rendering.opengl.shader.support]: Shaders are supported.
    13:56:41.445 [shader.compile.failure]: ***** ERROR: GLSL vertex shader compilation failed for dbshaderv.vertex:
>>>>> GLSL log:
0:8(9): preprocessor error: Redefinition of macro OO_TANGENT_ATTR



  13:56:41.445 [shader.load.failed]: ***** ERROR: Could not build shader dbshaderv.vertex/dbshaderf.fragment.
Are there logcontrol.plist options i should enable to get more info ?
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Ati Radeon 2xxxx and higher problems coming

Post by JensAyton »

Lone_Wolf wrote:
Are there logcontrol.plist options i should enable to get more info ?
No; the shader log you see there is what there is. (It’s provided by the GL driver, so we don’t have much control over it.)

However, in this case it’s pretty clear: dbshaderv.vertex is defining OO_TANGENT_ATTR, which it has no business doing – it’s defined by Oolite to indicate a certain feature exists, and shaders should at most be checking it, although they really shouldn’t do that either as it’s always true since test release 1.72 or some such.

The offending line will look something like:

Code: Select all

#define OO_TANGENT_ATTR 1
A problem like this shouldn’t be related to the crash, though; Oolite should just be falling back to the default shaders. (Missing features shouldn’t cause a crash either, of course. Oolite is supposed to be testing for all features it uses.)
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

Code: Select all

#define OO_TANGENT_ATTR 1  // <---- Define OO_TANGENT_ATTR to 1 so that Oolite gives correct tangent data to shader.
found in werewolf.oxp , that explains why i didn't get it in tests without oxps.
I'll keep looking.
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
Mauiby de Fug
---- E L I T E ----
---- E L I T E ----
Posts: 847
Joined: Tue Sep 07, 2010 2:23 pm

Re: Ati Radeon 2xxxx and higher problems coming

Post by Mauiby de Fug »

Lone_Wolf wrote:

Code: Select all

#define OO_TANGENT_ATTR 1  // <---- Define OO_TANGENT_ATTR to 1 so that Oolite gives correct tangent data to shader.
found in werewolf.oxp , that explains why i didn't get it in tests without oxps.
I'll keep looking.
I think that's there in all of Killer Wolf's oxps... I safely delete that line and they run without any trouble. Looking at the oxp list earlier the only one of his you seem to have is werewolf.oxp, so that specific error message shouldn't pop up again.
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

I had some spare time and looked into building the gallium driver myself again, with success .

By building mesa from git and installing the latest version of libdrm , oolite now works with full shaders and the gallium r600 driver.
It does look like the earlier problems were caused by the gallium driver, not by oolite.

i've run material test suite oxp 1.1 (had to remove the max version from requires.plist) and all but 4 tests were as threy should be .
In those 4 tests the circle / number was not present on all surfaces.

simple 13 , diffuse_map + specular_map
simple 14, specular_map only
full 13 , diffuse_map + specular_map
full 14, specular_map only

In a short trip from station to witchpoint and back , including a combat with 2 pirates i did not notice anything weird though.

Code: Select all

  15:06:17.245 [rendering.opengl.version]: OpenGL renderer version: 2.1.0 ("2.1 Mesa 7.11-devel"). Vendor: "X.Org". Renderer: "Gallium 0.4 on AMD RV770".
Build details :
libdrm version 2.4.24 (latest version) is needed
mesa git version 20110330

mesa configure flags (these are the same as used in the official mesa pacakge for my distro):

Code: Select all

    ./autogen.sh --prefix=/usr \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --enable-gallium-radeon \
    --enable-gallium-r600 \
    --enable-gallium-nouveau \
    --enable-gallium-swrast \
    --enable-glx-tls \
    --with-driver=dri \
    --enable-xcb \
    --with-state-trackers=dri,glx \
    --disable-glut \
    --enable-gles1 \
    --enable-gles2 \
    --enable-egl \
    --disable-gallium-egl
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Ati Radeon 2xxxx and higher problems coming

Post by JensAyton »

Lone_Wolf wrote:
i've run material test suite oxp 1.1 (had to remove the max version from requires.plist) and all but 4 tests were as threy should be .
In those 4 tests the circle / number was not present on all surfaces.

simple 13 , diffuse_map + specular_map
simple 14, specular_map only
full 13 , diffuse_map + specular_map
full 14, specular_map only
In those tests, the numbers are only visible at certain lighting angles. Please check against the [EliteWiki] reference renderings.

I take it we can remove the gpu-settings.plist entry, at least until 11.04 comes out?
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

The tests views are indeed similar to the reference renderings.

For the gpu-settings.plist entry i see some possible solutions :

- include a version check of the driver like 'Mesa > 7.10.1'
shaders full True, disabled if False

- start oolite without shaders , but allow user to change to simple / full

If neither is possible removing the entry seems simplest.

I also made a oolite page in the archlinux wiki to describe these problems.

Edit :

when starting oollite from commandline i see this error :
EE r600_pipe.c:429 r600_get_param - r600: unknown param 45

(oolite 1.75.1 )
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: Ati Radeon 2xxxx and higher problems coming

Post by Lone_Wolf »

Lone_Wolf wrote:
when starting oollite from commandline i see this error :
EE r600_pipe.c:429 r600_get_param - r600: unknown param 45
from https://bugs.freedesktop.org/show_bug.cgi?id=35434
Looking at src/gallium/drivers/r600/r600_pipe.c though, it looks like
r600_get_param() is not handling PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL which
has been mapped to '45'

Unless oolite uses PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL, it looks like this error can be ignored.

As mesa has released 7.10.2 , i tested with that version but it has the same problems as 7.10.1 .
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: [LINUX] ATI Radeon 2xxx and higher problems

Post by Lone_Wolf »

I've tested with the 2 most recent stable mesa builds and oolite 1.76 now runs fine with full shaders in both.
Versions tested : 7.11.2 & 8.0.2

I think we can safely remove the gpu-config fix and even set full shaders as default for the R600 gallium driver.
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
Post Reply