Building problem with dri 7.6

John Hein jhein at symmetricom.com
Tue Mar 1 17:35:48 UTC 2011


Zhihao Yuan wrote at 15:31 -0600 on Feb 28, 2011:
 > I posted this on freebsd-multimedia before. I guess I was in a wrong place.
 > 
 > I have observed the building issue for a long time.
 > 
 > ~> uname -a
 > FreeBSD compaq.yuetime 8.2-STABLE FreeBSD 8.2-STABLE #0: Thu Feb 24
 > 18:11:55 CST 2011     root at compaq.yuetime:/usr/obj/usr/src/sys/HOUKAGO
 >  amd64
 > My card is Ati Mobile Radeon X1600.
 > 
 > I built and installed libdrm 2.4.17, libGL, libGLU, libglut 7.6.1, so
 > far so good. When I want to
 > sudo make WITHOUT_NOUVEAU=1
 > for a dri 7.6.1,
 > I got some error message says "can't find radeon_cs_int.h", which
 > means Mesa need the definition of struct radeon_cs_int (and
 > radeon_bo_int, actually). So I extract these definitions (included in
 > the attachment) and put them in the correct places, so that the
 > package is successfully built.
 > But, when I test it, I got the following error:
 > 
 > ~> env LIBGL_DEBUG=verbose glxinfo | grep rendering
 > libGL: XF86DRIGetClientDriverName: 5.3.0 r300 (screen 0)
 > libGL: OpenDriver: trying /usr/local/lib/dri/r300_dri.so
 > libGL error: dlopen /usr/local/lib/dri/r300_dri.so failed
 > (/usr/local/lib/dri/r300_dri.so: Undefined symbol
 > "radeon_cs_write_table")
 > libGL error: unable to load driver: r300_dri.so
 > libGL: OpenDriver: trying /usr/local/lib/dri/swrast_dri.so
 > direct rendering: Yes
 > 
 > I tried to disable the 'inline' for the related functions, but I can't
 > got it work. DRI 7.4.4.2 works fine with other 7.6.1 libs, but 7.4 is
 > relatively old.

Your attachment did not make it.  However, as the graphics/dri &
graphics/libdrm ports exist today, it seems to be that graphics/dri
should not even be trying to include radeon_cs_int.h

The code has:

work/Mesa-7.6.1/src/mesa/drivers/dri/r600/r600_cmdbuf.c-#ifdef HAVE_LIBDRM_RADEON
work/Mesa-7.6.1/src/mesa/drivers/dri/r600/r600_cmdbuf.c:#include "radeon_cs_int.h"

And looking at the configure script for graphics/dri,
HAVE_LIBDRM_RADEON will only be defined if you somehow got the radeon
flavor of libdrm installed (or at least appear to be installed by the
graphics/dri configure script).  However the libdrm port is built
with:

    --disable-radeon-experimental-api

If you have bypassed that or gotten libdrm_radeon installed some other
way, this could explain why you are seeing build and dynamic linking
trouble where other people are not.

FWIW, I see no reference to "radeon_cs_write_table" in r300_dri.so
installed here (part of dri-7.6.1,2).

nm -oCD /usr/local/lib/dri/r300* | grep radeon_cs_
/usr/local/lib/dri/r300_dri.so:0006e180 T radeon_cs_begin
/usr/local/lib/dri/r300_dri.so:0006e110 T radeon_cs_create
/usr/local/lib/dri/r300_dri.so:0006e230 T radeon_cs_destroy
/usr/local/lib/dri/r300_dri.so:0006e200 T radeon_cs_emit
/usr/local/lib/dri/r300_dri.so:0006e1c0 T radeon_cs_end
/usr/local/lib/dri/r300_dri.so:0006e260 T radeon_cs_erase
/usr/local/lib/dri/r300_dri.so:0005b9f0 T radeon_cs_manager_legacy_ctor
/usr/local/lib/dri/r300_dri.so:0005ba70 T radeon_cs_manager_legacy_dtor
/usr/local/lib/dri/r300_dri.so:0006e290 T radeon_cs_need_flush
/usr/local/lib/dri/r300_dri.so:0006e2c0 T radeon_cs_print
/usr/local/lib/dri/r300_dri.so:0006e2f0 T radeon_cs_set_limit
/usr/local/lib/dri/r300_dri.so:0006db10 T radeon_cs_space_add_persistent_bo
/usr/local/lib/dri/r300_dri.so:0006dd40 T radeon_cs_space_check
/usr/local/lib/dri/r300_dri.so:0006dcd0 T radeon_cs_space_check_with_bo
/usr/local/lib/dri/r300_dri.so:0006dd70 T radeon_cs_space_reset_bos
/usr/local/lib/dri/r300_dri.so:0006e320 T radeon_cs_space_set_flush
/usr/local/lib/dri/r300_dri.so:0006e140 T radeon_cs_write_reloc



More information about the freebsd-x11 mailing list