grate-driver / mesa

Mesa fork for open-source NVIDIA Tegra20/30 GL implementation
33 stars 15 forks source link

building hints needed #6

Closed a-andreyev closed 6 years ago

a-andreyev commented 6 years ago

Hello! I've brushed off the dust from my toshiba ac100 with tegra 2.

I'm using archlinux arm armv7h and sucessfully built xf86-video-opentegra, libvdpau-tegra and libdrm from your awesome grate project on the device directly (wrapped build commands from here to PKGBUILDs).

So now I have mainline kernel (~4.16.10, should I build grate kernel first?) and able to start X, so cool! %D

and trying to build mesa master brach:

sh autogen.sh
sh configure --prefix=/usr \
 --enable-dri \
 --enable-glx \
 --enable-shared-glapi \
 --enable-texture-float \
 --disable-nine \
 --enable-debug \
 --enable-dri3 \
 --enable-egl \
 --enable-gbm \
 --enable-gles1 \
 --enable-gles2 \
 --enable-glx-tls \
 --enable-valgrind=auto \
 --enable-llvm-shared-libs \
 --with-dri-drivers=swrast \
 --with-gallium-drivers=swrast,tegra \
 --with-vulkan-drivers= \
 --with-egl-platforms=x11,drm \ 
 --disable-nine \
 --disable-llvm \
 --disable-omx \
 --disable-va \
 --disable-vdpau \
 --disable-xa \
 --disable-xvmc \
 --disable-gallium-osmesa

with no luck during sh autogen.sh , getting:

...
checking for libdrm >= 2.4.75 libdrm_intel >= 2.4.75... no
configure: error: Package requirements (libdrm >= 2.4.75 libdrm_intel >= 2.4.75) were not met:

No package 'libdrm_intel' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables I915_CFLAGS
and I915_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Am I missing something obvious here? Saw this discussion but not sure how to interpret it. Looks like I cannot exclude some intel i915 drivers from building?

kusma commented 6 years ago

You need to pass those arguments to autogen.sh (or set $NOCONFIGURE), as autogen.sh automatically runs configure at the end with its arguments.

digetx commented 6 years ago

Yes, just run:

sh autogen.sh --prefix=/usr \
 --enable-dri \
 --enable-glx \
 --enable-shared-glapi \
 --enable-texture-float \
 --disable-nine \
 --enable-debug \
 --enable-dri3 \
 --enable-egl \
 --enable-gbm \
 --enable-gles1 \
 --enable-gles2 \
 --enable-glx-tls \
 --enable-valgrind=auto \
 --enable-llvm-shared-libs \
 --with-dri-drivers=swrast \
 --with-gallium-drivers=swrast,grate \
 --with-vulkan-drivers= \
 --with-egl-platforms=x11,drm \ 
 --disable-nine \
 --disable-llvm \
 --disable-omx-bellagio \
 --disable-va \
 --disable-vdpau \
 --disable-xa \
 --disable-xvmc \
 --disable-gallium-osmesa

Also, I'd suggest to wait couple days for a grate's mesa update as it is partially disfunctional right now. Otherwise you'd have to do something like this after install:

# ln -s /usr/lib/arm-linux-gnueabihf/dri/grate_dri.so /usr/lib/arm-linux-gnueabihf/dri/tegra_dri.so
a-andreyev commented 6 years ago

Thank you! Sorry for my ignorance, missed NOCONFIGURE=1 logic. Changing this and flags --with-gallium-drivers=swrast,grate and --disable-omx-bellagio helped too, building is starting, but right now I stuck at libunwind:

...
Making all in gallium
make[3]: Entering directory '/home/alarm/mesa/src/mesa/src/gallium'
Making all in auxiliary
make[4]: Entering directory '/home/alarm/mesa/src/mesa/src/gallium/auxiliary'
  CC       util/u_debug_stack.lo
In file included from /usr/include/libunwind.h:9,
                 from util/u_debug_stack.h:35,
                 from util/u_debug_stack.c:37:
util/u_debug_stack.c: In function ‘debug_backtrace_capture’:
util/u_debug_stack.c:114:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘asm’
    unw_getcontext(&context);
    ^~~~~~~~~~~~~~
util/u_debug_stack.c:114:4: error: lvalue required as left operand of assignment
    unw_getcontext(&context);
    ^~~~~~~~~~~~~~
util/u_debug_stack.c:114:4: error: ‘unw_base’ undeclared (first use in this function); did you mean ‘unw_ctx’?
    unw_getcontext(&context);
    ^~~~~~~~~~~~~~
util/u_debug_stack.c:114:4: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [Makefile:2229: util/u_debug_stack.lo] Error 1
make[4]: Leaving directory '/home/alarm/mesa/src/mesa/src/gallium/auxiliary'
make[3]: *** [Makefile:621: all-recursive] Error 1
make[3]: Leaving directory '/home/alarm/mesa/src/mesa/src/gallium'
make[2]: *** [Makefile:869: all-recursive] Error 1
make[2]: Leaving directory '/home/alarm/mesa/src/mesa/src'
make[1]: *** [Makefile:660: all] Error 2
make[1]: Leaving directory '/home/alarm/mesa/src/mesa/src'
make: *** [Makefile:673: all-recursive] Error 1

Thank you for you help, it's not a problem for me to wait a couple of days if it's related to current branch state.

I'm researching current state of the tegra2 graphic stack support just for fun, pretty impressed this project exists and looks like no need to play with libhybris approach.

kusma commented 6 years ago

Yeah, that is a problem for all ARM-based builds AFAIK. You can disable libunwind to get around it...

a-andreyev commented 6 years ago

temporary --disable-libunwind helped.

Able to build mesa, thank you! Will follow the project to update build pkgbuild scripts and share them.

P.S.: pure magic :) default plasma desktop is not that should I ask for my device specs though :) ac100

digetx commented 6 years ago

Plasma is working nearly perfect on T20. Maybe it will get even better once we'll get some more GPU accell.

a-andreyev commented 6 years ago

provided PKGBUILDs, anyone feel free to fix/contribute :)

digetx commented 6 years ago

Awesome! Thank you very much! I think it's now worth to create a page with some basic building tips and useful links, I'll take a look into it now.

digetx commented 6 years ago

I've created a wiki page with the links and linked it in the grate-driver's organization description.