summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/Makefile.am
Commit message (Collapse)AuthorAgeFilesLines
* anv: automake: cleanup the generated json file during make cleanEmil Velikov2016-10-241-1/+1
| | | | Signed-off-by: Emil Velikov <[email protected]>
* anv: Always use the full driver path in the intel_icd.*.jsonJason Ekstrand2016-10-211-7/+1
| | | | | | Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: "13.0" <[email protected]>
* anv: Suffix the intel_icd file with the host CPUJason Ekstrand2016-10-211-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vulkan has a multi-arch problem... The idea behind the Vulkan loader is that you have a little json file on your disk that tells the loader where to find drivers. The loader looks for these json files in standard locations, and then goes and loads the my_driver.so's that they specify. This allows you as a driver implementer to put their driver wherever on the disk they want so long as the ICD points in the right place. For a multi-arch system, however, you may have multiple libvulkan_intel.so files installed that the loader needs to pick depending on architecture. Since the ICD file format does not specify any architecture information, you can't tell the loader where to find the 32-bit version vs. the 64-bit version. The way that packagers have been dealing with this is to place libvulkan_intel.so in the top level lib directory and provide just a name (and no path) to the loader. It will then use the regular system search paths and find the correct driver. While this solution works fine for distro-installed Vulkan drivers, it doesn't work so well for user-installed drivers because they may put it in /opt or $HOME/.local or some other more exotic location. In this case, you can't use an ICD json file with just a library name because it doesn't know where to find it; you also have to add that to your library lookup path via LD_LIBRARY_PATH or similar. This patch handles both use-cases by taking advantage of the fact that the loader dlopen()s each of the drivers and, if one dlopen() calls fails, it silently continues on to open other drivers. By suffixing the icd file, we can provide two different json files: intel_icd.x86_64.json and intel_icd.i686.json with different paths. Since dlopen() will only succeed on the libvulkan_intel.so of the right arch, the loader will happily ignore the others and load that one. This allows us to properly handle multi-arch while still providing a full path so user installs will work fine. I tested this on my Fedora 25 machine with 32 and 64-bit builds of our Vulkan driver installed and 32 and 64-bit builds of crucible. It seems to work just fine. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: "13.0" <[email protected]>
* anv: move to using shared wsi codeDave Airlie2016-10-191-0/+2
| | | | | | | | This moves the shared code to a common subdirectory and makes anv linked to that code instead of the copy it was using. Reviewed-by: Jason Ekstrand <[email protected]>
* anv: automake: ship intel_icd.json.in in the tarballEmil Velikov2016-10-061-0/+1
| | | | | | Otherwise we'll fail to (re)generate intel_icd.json. Signed-off-by: Emil Velikov <[email protected]>
* anv: Add initial blorp supportJason Ekstrand2016-09-131-0/+1
| | | | | Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Topi Pohjolainen <[email protected]>
* anv: Link to libX11-xcb only when unneededChad Versace2016-09-081-3/+5
| | | | | | | | | | | | | The Makefile unconditionally linked libX11-xcb into libvulkan_intel.so. But it's needed only if HAVE_PLATFORM_X11. Fixes build of libvulkan_intel.so on Chromium OS, which has no X11 libraries. Fixes: 71258e9462c ("anv/x11: Add support for Xlib platform") Cc: Kevin Strasser <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* intel: Add a new "common" library for more code sharingJason Ekstrand2016-09-031-0/+1
| | | | | | | The first thing to go in this new library is brw_device_info. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* anv: Add a --disable-vulkan-icd-full-driver-path optionJason Ekstrand2016-08-251-1/+7
| | | | | | | | This option makes installed Vulkan ICD files contain only a driver library name and not a path. This is intended for distros to help them work around multi-arch issues. Reviewed-by: Dave Airlie <[email protected]>
* anv: Give the installed intel_icd.json file an absolute pathJason Ekstrand2016-08-201-1/+6
| | | | | | | | | | | | Not providing a path allows the ICD to work on multi-arch systems but breaks it if you install anywhere other than /usr/lib. Given that users may be installing locally in .local or similar, we probably do want to provide a filename. Distros can carry a revert of this commit if they want an intel_icd.json file without the path. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* anv: automake: build with -BsymbolicEmil Velikov2016-08-181-0/+1
| | | | | | | | | Explicitly suggested in the Loader interface version 2 section, but it's good idea either way. It essentially, ensures that our symbols are not interposed. Cc: "12.0" <[email protected]> Cc: Jason Ekstrand <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* anv: automake: use VISIBILITY_CFLAGS to restrict symbol visibilityEmil Velikov2016-08-181-1/+3
| | | | | | | | | | | Hide the internal symbols and annotate the vk_icdGetInstanceProcAddr as public since the loader needs it (since v1 of the loader interface). v2: Add VISIBILITY_CFLAGS to AM_CFLAGS (Ken) Cc: "12.0" <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> (v1) Signed-off-by: Emil Velikov <[email protected]>
* anv/x11: Add support for Xlib platformKevin Strasser2016-08-151-3/+4
| | | | | | | | | | | Some applications continue to use the Xlib client library and expect that VK_KHR_xlib_surface will be available in the driver. Service these applications by converting the Display pointer to xcb_connection_t and use the existing xcb code in the driver. Signed-off-by: Kevin Strasser <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* anv: vulkan: remove the anv_device.$(OBJEXT) ruleEmil Velikov2016-07-061-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Atm the actual rule will expand to foo.o which is used for static libraries only. Thus the automake manual recommendation [to use OBJEXT] won't help us, since since we're working with a shared library. Thus let's 'demote' the file and add it back to BUILT_SOURCES. This will manage all the complexity for us, at the (existing expense) of working only with the all, check and install targets. The crazy (why the issue was hard to spot): If the dependencies (.deps/*.Plo) are already created one can alter the anv_device.$(OBJEXT) line and/or nuke it all together. That won't lead to any warnings/issues, even though the Makefile is regenerated. Moral of the story: Always rm -rf top_builddir or don't resolve the dependencies manually and use BUILT_SOURCES. Cc: "12.0" <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96825 Fixes: d7a604c3f7a ("anv: use cache uuid based on the build timestamp.") Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> Tested-by: Mark Janes <[email protected]>
* anv: automake: indent with tabs and not spacesEmil Velikov2016-07-051-4/+4
| | | | Signed-off-by: Emil Velikov <[email protected]>
* anv: use cache uuid based on the build timestamp.Emil Velikov2016-07-051-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not rely on the git sha1: - its current truncated form makes it less unique - it does not attribute for local (Vulkand or otherwise) changes Use a timestamp produced at the time of build. It's perfectly unique, unless someone explicitly thinkers with their system clock. Even then chances of producing the exact same one are very small, if not zero. v2: Remove .tmp rule. Its not needed since we want for the header to be regenerated on each time we call make (Eric). v3: - Honour SOURCE_DATE_EPOCH, to make the build reproducible (Michel) - Replace the generated header with a define, to prevent needless builds on consecutive `make' and/or `make install' calls. (Dave) v4: - Keep the timestamp generation at make time. (Jason) v5: - Ensure that file is regenerated on incremental builds. Cc: Michel Dänzer <[email protected]> Cc: Dave Airlie <[email protected]> Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv/entrypoints: Stop using the C preprocessorJason Ekstrand2016-06-071-12/+2
| | | | | | | | Now that we emit guards for everything, we can just generate the files and trust build flags to keep us safe. This should also fix the tarball problems. Reviewed-by: Emil Velikov <[email protected]>
* anv/entrypoints: don't go using wayland/xcb unless they are configuredDave Airlie2016-06-051-6/+9
| | | | | | | | | | | | | | The fix in: anv: let anv_entrypoints_gen.py generate proper Wayland/Xcb guards breaks things if wayland headers aren't installed. Separate things out properly to avoid that problem. [airlied: fixed up to put in pre-existing sections]. Reported-by: Arjan van de Ven Reviewed-by: Jason Ekstrand <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
* anv: add the X related and Wayland CFLAGS to VULKAN_ENTRYPOINT_CPPFLAGSEmil Velikov2016-06-041-0/+2
| | | | | | | | | | Otherwise we will fail to find the headers in some scenarios. Cc: <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reported-by: Tobias Klausmann <[email protected]> Tested-by: Tobias Klausmann <[email protected]> Reviewed-by: Tobias Klausmann <[email protected]>
* anv: automake: don't forget to cleanup dev_icd.jsonEmil Velikov2016-05-301-1/+1
| | | | | | | | | | Otherwise `make distcheck' will barf at us as the file is dangling. Ideally this should be part of the clean-local hook, although we include install-lib-links.mk which already has one. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: automake: bring back VULKAN_ENTRYPOINT_CPPFLAGSEmil Velikov2016-05-301-2/+6
| | | | | | | | | | | | | We should not have removed them in the first place. There's a subtle difference between generating the complete sources and using them which was not obvious as we nuked them. Without this, the release tarball ends up without various hunks of the generated sources, thus things fail at a later stage as we attempt to build them. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: automake: ship the json files in the release tarballEmil Velikov2016-05-301-1/+3
| | | | | Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: Stop linking against libmesa.la and libdri_test_stubs.laJason Ekstrand2016-05-261-3/+3
| | | | | | | | This brings the final size of an optimized non-debug build of the Vulkan driver down to 2.9 MB as opposed to 8.7 MB for the dri driver. Reviewed-by: Emil Velikov <[email protected]> Reviewed-by: Kristian Høgsberg <[email protected]>
* anv: fix hang during generation of dev_icd.json.Knut Andre Tidemann2016-05-031-1/+1
| | | | | Fixes: b370ec7c76d ("anv: tweak the %.json rule") Reviewed-by: Emil Velikov <[email protected]>
* anv: include the files in the tarballEmil Velikov2016-05-011-0/+3
| | | | | | | | Namely the python script, the ICD header and private headers. We could get the system version of the ICD ones, although there is no .pc file to easily locate and/or manage them. Signed-off-by: Emil Velikov <[email protected]>
* anv: automake: remove no longer needed includeEmil Velikov2016-05-011-1/+0
| | | | | | Thanks to last commit we can nuke it. Signed-off-by: Emil Velikov <[email protected]>
* anv: automake: tweak anv_entrypoint.[ch] ruleEmil Velikov2016-05-011-2/+4
| | | | | | | Rather than using cat + cpp feed the file(s) directly into the latter. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: tweak libvulkan_intel.so link librariesEmil Velikov2016-05-011-1/+3
| | | | | | i.e do not use -lfoo directly. Signed-off-by: Emil Velikov <[email protected]>
* anv: cosmetic makefile changesEmil Velikov2016-05-011-13/+11
| | | | | Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: place the builddir includes before the srcdir onesEmil Velikov2016-05-011-5/+5
| | | | | | | | Otherwise we risk picking the possibly outdated file in the source dir over the fresh one in the builddir. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* automake: drop "EGL_" from HAVE_EGL_PLATFORM_WAYLANDEmil Velikov2016-05-011-1/+1
| | | | | | Analogous to previous commit. Signed-off-by: Emil Velikov <[email protected]>
* automake: drop "EGL_" from HAVE_EGL_PLATFORM_X11Emil Velikov2016-05-011-1/+1
| | | | | | | The variable covers more than just EGL, let's try to untangle the confusion it brings. Signed-off-by: Emil Velikov <[email protected]>
* anv: get rid of VULKAN_ENTRYPOINT_CPPFLAGS variableEmil Velikov2016-05-011-11/+3
| | | | | | | | Add the missing include to AM_CPPFLAGS and use it throughout the makefile. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: factor out the X11/XCB buildEmil Velikov2016-05-011-6/+17
| | | | | | | | | | | Similar to earlier commit - move all the common bits into a single place, thus improving readability and allowing us to see what's missing. Also don't forget to add the missing bits. This commit should allows us to build wayland only vulkan ;-) Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: kill of custom define HAVE_WAYLAND_PLATFORMEmil Velikov2016-05-011-2/+1
| | | | | | | Vulkan API already has equivalent, so simplify things as just use it. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: refactor wayland build handlingEmil Velikov2016-05-011-15/+12
| | | | | | | | | | | Rather than having things split out in multiple places, consolidate it and add all the missing bits. Also ensure that we use the already built static library libwayland-drm.la. v2 Add missing '\' in the CFLAGS. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]> (v1)
* anv: use a common variable to manage the library dependenciesEmil Velikov2016-05-011-11/+15
| | | | | Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: use the GENERATED_FILES variableEmil Velikov2016-05-011-0/+1
| | | | | | | | | | | ... rather than having duplicates files through the sources lists. Splitting things as is, has the side effect of making things clearer and easing a potential android build. The latter of which automatically adds BUILT_SOURCES to the binary. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: fold the tests' makefileEmil Velikov2016-05-011-2/+15
| | | | | | | | | Recent commit removed the winsys defines from anv_private.h thus breaking the tests. To fix that and avoid it in the future, merge the tests makefile in the libvulkan one. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: build the core vulkan only onceEmil Velikov2016-05-011-8/+6
| | | | | | | | Introduce a static library libvulkan_common.la that is used by libvukan_intel.la and libvulkan_test.la. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: kill off custom CFLAGSEmil Velikov2016-05-011-10/+6
| | | | | | | AM_CFLAGS already does all that we need. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: add missing link against the math libraryEmil Velikov2016-05-011-1/+2
| | | | | Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: split sources lists to Makefile.sourcesEmil Velikov2016-05-011-61/+17
| | | | | | | | Will allow others to reuse the lists (scons/android anyone ?) and makes the file a lot shorter and easier to read. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: remove custom rule to install the intel_icd.jsonEmil Velikov2016-05-011-10/+1
| | | | | | | | Autoconf already does the exact same thing as the manually written rule. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94969 Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: tweak the LDFLAGSEmil Velikov2016-05-011-1/+6
| | | | | | | | | | | | Copy/paste from the rest of mesa, but namely. - The module should be shared only. - We don't need the explicit ".so", as the vulkan loader will retrieve the full filename from the json - No unresolved symbols in the final binary - Use the linker garbage collector to slim down the final binary. Signed-off-by: Emil Velikov <[email protected]> Acked-by: Jason Ekstrand <[email protected]>
* anv: tweak the %.json ruleEmil Velikov2016-05-011-4/+3
| | | | | | | | | It's used only by dev_icd.json so just call it that way. While we're here, manually expand $< (as it might cause issue on some systems) and drop the unneeded install_libdir substitution. Acked-by: Jason Ekstrand <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* anv: add a comment about dev_icd.jsonEmil Velikov2016-05-011-0/+1
| | | | | Reviewed-by: Jason Ekstrand <[email protected]> Signed-off-by: Emil Velikov <[email protected]>
* anv: honor DESTDIR when installing icd fileLaurent Carlier2016-04-261-1/+1
| | | | | | https://bugs.freedesktop.org/show_bug.cgi?id=94969 Reviewed-by: Chad Versace <[email protected]>
* anv: fix build without Wayland platformMarcin Ślusarz2016-04-201-4/+5
| | | | Reviewed-by: Jason Ekstrand <[email protected]>
* anv: fix building on i686 with -mcpu=genericLaurent Carlier2016-04-201-1/+1
| | | | | | mcpu=generic doesn't enable sse2, and anvil definitly needs it Reviewed-by: Jason Ekstrand <[email protected]>