Problem: You believe you have your Linux set up correctly, graphics driver is a good one, direct rendering works as is confirmed by glxgears (64bit) works fine, and glxinfo says direct rendering: Yes

However, some 32bit software (e.g. wine) causes errors. WINEDEBUG=+wgl will reveal:

 Direct rendering enabled: False

although driver etc. are recognized properly. Further debugging of the problem can be done with LIBGL_DEBUG=verbose. The 32bit app will say

libGL: OpenDriver: trying /usr/lib/dri/
libGL error: failed to create dri screen

This shows two things:

  1. the driver is the correct one (note lib = 32bit vs. lib64 = 64bit as would be the output given by glxgears). If the driver were wrong, there would be an elf class error (you can set the driver path explicitly with LIBGL_DRIVERS_PATH)
  2. cannot create dri screen :/

The 64bit one will have OpenDriver: trying /usr/lib64/dri/ (for example) and no error.

This instance of the problem was caused by the following: the 32bit and 64bit versions of libdrm and/or Mesa were different @_@. This happened due to an upgrade which upgraded the 64bit parts, but the 32bit stuff installed in parallel with an older version (can I blame the package manager for not marking this as a conflict?)

Making sure the various package.x86_64 and package-32bit versions were exactly the same, this problem resolved.