Bug 94970

Summary: Vulkan fail to build on i686
Product: Mesa Reporter: Laurent carlier <lordheavym>
Component: Drivers/Vulkan/intelAssignee: Jason Ekstrand <jason>
Status: RESOLVED FIXED QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: blocker    
Priority: medium CC: lonewolf
Version: git   
Hardware: x86 (IA32)   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Laurent carlier 2016-04-16 15:34:29 UTC
* gcc 5.3.0
* built with:
  ./autogen.sh --prefix=/usr \
  --sysconfdir=/etc \
  --with-dri-driverdir=/usr/lib/xorg/modules/dri \
  --with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast,virgl \
  --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
  --with-egl-platforms=x11,drm,wayland \
  --with-vulkan-drivers=intel \
  --with-sha1=libgcrypt \
  --enable-egl \
  --enable-gbm \
  --enable-gallium-llvm \
  --enable-llvm-shared-libs \
  --enable-shared-glapi \
  --enable-glx \
  --enable-glx-tls \
  --enable-dri \
  --enable-osmesa \
  --enable-gles1 \
  --enable-gles2 \
  --enable-texture-float \
  --enable-xa \
  --enable-vdpau \
  --enable-omx \
  --enable-nine \
  --enable-opencl --enable-opencl-icd \
  --with-clang-libdir=/usr/lib

====>

make[5]: Entering directory '/build/mesa-git/src/mesa/src/intel/vulkan'
  CC       libvulkan_intel_la-anv_allocator.lo
  CC       libvulkan_intel_la-anv_cmd_buffer.lo
  CC       libvulkan_intel_la-anv_batch_chain.lo
  CC       libvulkan_intel_la-anv_descriptor_set.lo
In file included from anv_batch_chain.c:30:0:
anv_private.h: In function 'anv_clflush_range':
anv_private.h:433:4: error: implicit declaration of function '__builtin_ia32_mfence' [-Werror=implicit-function-declaration]
    __builtin_ia32_mfence();
    ^
anv_private.h:435:7: error: implicit declaration of function '__builtin_ia32_clflush' [-Werror=implicit-function-declaration]
       __builtin_ia32_clflush(p);
       ^
In file included from anv_descriptor_set.c:30:0:
anv_private.h: In function 'anv_clflush_range':
anv_private.h:433:4: error: implicit declaration of function '__builtin_ia32_mfence' [-Werror=implicit-function-declaration]
    __builtin_ia32_mfence();
    ^
anv_private.h:435:7: error: implicit declaration of function '__builtin_ia32_clflush' [-Werror=implicit-function-declaration]
       __builtin_ia32_clflush(p);
       ^
In file included from anv_cmd_buffer.c:30:0:
anv_private.h: In function 'anv_clflush_range':
anv_private.h:433:4: error: implicit declaration of function '__builtin_ia32_mfence' [-Werror=implicit-function-declaration]
    __builtin_ia32_mfence();
    ^
anv_private.h:435:7: error: implicit declaration of function '__builtin_ia32_clflush' [-Werror=implicit-function-declaration]
       __builtin_ia32_clflush(p);
       ^
In file included from anv_allocator.c:37:0:
anv_private.h: In function 'anv_clflush_range':
anv_private.h:433:4: error: implicit declaration of function '__builtin_ia32_mfence' [-Werror=implicit-function-declaration]
    __builtin_ia32_mfence();
    ^
anv_private.h:435:7: error: implicit declaration of function '__builtin_ia32_clflush' [-Werror=implicit-function-declaration]
       __builtin_ia32_clflush(p);
       ^
cc1: some warnings being treated as errors
Makefile:1403: recipe for target 'libvulkan_intel_la-anv_allocator.lo' failed
make[5]: *** [libvulkan_intel_la-anv_allocator.lo] Error 1
make[5]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
Makefile:1424: recipe for target 'libvulkan_intel_la-anv_descriptor_set.lo' failed
make[5]: *** [libvulkan_intel_la-anv_descriptor_set.lo] Error 1
cc1: some warnings being treated as errors
Makefile:1417: recipe for target 'libvulkan_intel_la-anv_batch_chain.lo' failed
make[5]: *** [libvulkan_intel_la-anv_batch_chain.lo] Error 1
cc1: some warnings being treated as errors
Makefile:1410: recipe for target 'libvulkan_intel_la-anv_cmd_buffer.lo' failed
make[5]: *** [libvulkan_intel_la-anv_cmd_buffer.lo] Error 1
make[5]: Leaving directory '/build/mesa-git/src/mesa/src/intel/vulkan'
Makefile:1660: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/build/mesa-git/src/mesa/src/intel/vulkan'
Makefile:840: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/build/mesa-git/src/mesa/src/intel/vulkan'
Makefile:550: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/build/mesa-git/src/mesa/src/intel'
Makefile:690: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/build/mesa-git/src/mesa/src'
Makefile:639: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
==> ERROR: A failure occurred in build().
    Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/mesagit-i686/lcarlier/build
Comment 1 Laurent carlier 2016-04-16 16:36:14 UTC
gcc flags for i686 on Archlinux are:
CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong"
CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong"
Comment 2 Laurent carlier 2016-04-16 16:39:33 UTC
These builtins are specific to sse2
https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html#x86-Built-in-Functions
Comment 3 Laurent carlier 2016-04-16 17:22:50 UTC
forcing sse2 on CFLAGS/CXXFLAGS fixes the build
Comment 4 Jason Ekstrand 2016-04-16 19:09:23 UTC
(In reply to Laurent carlier from comment #3)
> forcing sse2 on CFLAGS/CXXFLAGS fixes the build

We need to just do that in the Vulkan makefile.  You'll never run the driver on a machine that doesn't support sse2 anyway.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.