diff options
Diffstat (limited to 'lib/mesa')
-rw-r--r-- | lib/mesa/Makefile.bsd-wrapper | 5 | ||||
-rw-r--r-- | lib/mesa/src/amd/vulkan/Makefile.am | 14 | ||||
-rw-r--r-- | lib/mesa/src/amd/vulkan/Makefile.in | 13 | ||||
-rw-r--r-- | lib/mesa/src/amd/vulkan/radv_device.c | 4 | ||||
-rw-r--r-- | lib/mesa/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 3 | ||||
-rw-r--r-- | lib/mesa/src/intel/Makefile.in | 14 | ||||
-rw-r--r-- | lib/mesa/src/intel/Makefile.vulkan.am | 15 | ||||
-rw-r--r-- | lib/mesa/src/intel/vulkan/anv_allocator.c | 20 | ||||
-rw-r--r-- | lib/mesa/src/intel/vulkan/anv_device.c | 17 | ||||
-rw-r--r-- | lib/mesa/src/intel/vulkan/anv_private.h | 10 | ||||
-rw-r--r-- | lib/mesa/src/intel/vulkan/anv_queue.c | 2 | ||||
-rw-r--r-- | lib/mesa/src/util/futex.h | 20 |
12 files changed, 136 insertions, 1 deletions
diff --git a/lib/mesa/Makefile.bsd-wrapper b/lib/mesa/Makefile.bsd-wrapper index a9f40c58f..2801def26 100644 --- a/lib/mesa/Makefile.bsd-wrapper +++ b/lib/mesa/Makefile.bsd-wrapper @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.bsd-wrapper,v 1.26 2019/05/23 05:33:19 jsg Exp $ +# $OpenBSD: Makefile.bsd-wrapper,v 1.27 2019/05/27 07:20:30 jsg Exp $ .include <bsd.own.mk> .include <bsd.xconf.mk> @@ -8,11 +8,13 @@ SHARED_LIBS= EGL 1.1 gbm 0.4 glapi 0.2 GL 17.1 GLESv1_CM 2.0 GLESv2 2.0 \ DRI_DRIVERS= swrast GALLIUM_DRIVERS= swrast +VULKAN_DRIVERS= no WITH_LLVM= --disable-llvm .if ${MACHINE} == i386 || ${MACHINE} == amd64 DRI_DRIVERS=swrast,radeon,r200,i915,i965 GALLIUM_DRIVERS=swrast,r300,r600,radeonsi +VULKAN_DRIVERS= intel,radeon WITH_LLVM= --enable-llvm .endif @@ -24,6 +26,7 @@ GALLIUM_DRIVERS=swrast,r300,r600 CONFIGURE_ARGS= --with-dri-drivers=${DRI_DRIVERS} \ --with-gallium-drivers=${GALLIUM_DRIVERS} \ + --with-vulkan-drivers=${VULKAN_DRIVERS} \ --disable-silent-rules \ ${WITH_LLVM} \ --disable-glx-tls \ diff --git a/lib/mesa/src/amd/vulkan/Makefile.am b/lib/mesa/src/amd/vulkan/Makefile.am index 14b222d40..1e10f9ffb 100644 --- a/lib/mesa/src/amd/vulkan/Makefile.am +++ b/lib/mesa/src/amd/vulkan/Makefile.am @@ -199,6 +199,20 @@ dev_icd.json : radv_extensions.py radv_icd.py radeon_icd.@host_cpu@.json : radv_extensions.py radv_icd.py $(AM_V_GEN)$(PYTHON) $(srcdir)/radv_icd.py \ --lib-path="${libdir}" --out $@ +else +radeon_icd.@host_cpu@.json : + @echo -e "{" > $@ + @echo -e " \"ICD\": {" >> $@ + @echo -e " \"api_version\": \"1.1.70\"," >> $@ + @echo -e " \"library_path\": \"${libdir}/libvulkan_radeon.so\"" >> $@ + @echo -e " }," >> $@ + @echo -e " \"file_format_version\": \"1.0.0\"" >> $@ + @echo -ne "}" >> $@ + +.PHONY: radeon_icd.@host_cpu@.json + +dev_icd.json : radeon_icd.@host_cpu@.json + cp radeon_icd.@host_cpu@.json $@ endif include $(top_srcdir)/install-lib-links.mk diff --git a/lib/mesa/src/amd/vulkan/Makefile.in b/lib/mesa/src/amd/vulkan/Makefile.in index f2d99f42f..e13095598 100644 --- a/lib/mesa/src/amd/vulkan/Makefile.in +++ b/lib/mesa/src/amd/vulkan/Makefile.in @@ -1286,6 +1286,19 @@ uninstall-am: uninstall-icdconfDATA uninstall-libLTLIBRARIES @REGEN_SOURCES_TRUE@radeon_icd.@host_cpu@.json : radv_extensions.py radv_icd.py @REGEN_SOURCES_TRUE@ $(AM_V_GEN)$(PYTHON) $(srcdir)/radv_icd.py \ @REGEN_SOURCES_TRUE@ --lib-path="${libdir}" --out $@ +@REGEN_SOURCES_FALSE@radeon_icd.@host_cpu@.json : +@REGEN_SOURCES_FALSE@ @echo -e "{" > $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"ICD\": {" >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"api_version\": \"1.1.70\"," >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"library_path\": \"${libdir}/libvulkan_radeon.so\"" >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " }," >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"file_format_version\": \"1.0.0\"" >> $@ +@REGEN_SOURCES_FALSE@ @echo -ne "}" >> $@ + +@REGEN_SOURCES_FALSE@.PHONY: radeon_icd.@host_cpu@.json + +@REGEN_SOURCES_FALSE@dev_icd.json : radeon_icd.@host_cpu@.json +@REGEN_SOURCES_FALSE@ cp radeon_icd.@host_cpu@.json $@ @BUILD_SHARED_TRUE@@HAVE_COMPAT_SYMLINKS_TRUE@all-local : .install-mesa-links diff --git a/lib/mesa/src/amd/vulkan/radv_device.c b/lib/mesa/src/amd/vulkan/radv_device.c index 334c8bd45..a81cb456a 100644 --- a/lib/mesa/src/amd/vulkan/radv_device.c +++ b/lib/mesa/src/amd/vulkan/radv_device.c @@ -49,6 +49,10 @@ #include "util/debug.h" #include "util/mesa-sha1.h" +#ifndef CLOCK_MONOTONIC_RAW +#define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC +#endif + static int radv_device_get_cache_uuid(enum radeon_family family, void *uuid) { diff --git a/lib/mesa/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/lib/mesa/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 49a86a72c..0c779806e 100644 --- a/lib/mesa/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/lib/mesa/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -35,6 +35,9 @@ #include "radv_amdgpu_bo.h" #include "sid.h" +#ifndef ETIME +#define ETIME ETIMEDOUT +#endif enum { VIRTUAL_BUFFER_HASH_TABLE_SIZE = 1024 diff --git a/lib/mesa/src/intel/Makefile.in b/lib/mesa/src/intel/Makefile.in index 519562b0c..0b540ff77 100644 --- a/lib/mesa/src/intel/Makefile.in +++ b/lib/mesa/src/intel/Makefile.in @@ -5057,6 +5057,20 @@ isl_tiled_memcpy_sse41.c: $(ISL_TILED_MEMCPY_DEP_FILES) @REGEN_SOURCES_TRUE@ $(MKDIR_GEN) @REGEN_SOURCES_TRUE@ $(AM_V_GEN)$(PYTHON) $(srcdir)/vulkan/anv_icd.py \ @REGEN_SOURCES_TRUE@ --lib-path="${libdir}" --out $@ +@REGEN_SOURCES_FALSE@vulkan/intel_icd.@host_cpu@.json : +@REGEN_SOURCES_FALSE@ $(MKDIR_GEN) +@REGEN_SOURCES_FALSE@ @echo -e "{" > $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"ICD\": {" >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"api_version\": \"1.1.96\"," >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"library_path\": \"${libdir}/libvulkan_intel.so\"" >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " }," >> $@ +@REGEN_SOURCES_FALSE@ @echo -e " \"file_format_version\": \"1.0.0\"" >> $@ +@REGEN_SOURCES_FALSE@ @echo -ne "}" >> $@ + +@REGEN_SOURCES_FALSE@.PHONY: vulkan/intel_icd.@host_cpu@.json + +@REGEN_SOURCES_FALSE@vulkan/dev_icd.json : vulkan/intel_icd.@host_cpu@.json +@REGEN_SOURCES_FALSE@ cp vulkan/intel_icd.@host_cpu@.json $@ @BUILD_SHARED_TRUE@@HAVE_COMPAT_SYMLINKS_TRUE@@HAVE_INTEL_VULKAN_TRUE@all-local : .install-mesa-links diff --git a/lib/mesa/src/intel/Makefile.vulkan.am b/lib/mesa/src/intel/Makefile.vulkan.am index c7b36ef4b..5a1e1f55d 100644 --- a/lib/mesa/src/intel/Makefile.vulkan.am +++ b/lib/mesa/src/intel/Makefile.vulkan.am @@ -75,6 +75,21 @@ vulkan/intel_icd.@host_cpu@.json : vulkan/anv_extensions.py vulkan/anv_icd.py $(MKDIR_GEN) $(AM_V_GEN)$(PYTHON) $(srcdir)/vulkan/anv_icd.py \ --lib-path="${libdir}" --out $@ +else +vulkan/intel_icd.@host_cpu@.json : + $(MKDIR_GEN) + @echo -e "{" > $@ + @echo -e " \"ICD\": {" >> $@ + @echo -e " \"api_version\": \"1.1.96\"," >> $@ + @echo -e " \"library_path\": \"${libdir}/libvulkan_intel.so\"" >> $@ + @echo -e " }," >> $@ + @echo -e " \"file_format_version\": \"1.0.0\"" >> $@ + @echo -ne "}" >> $@ + +.PHONY: vulkan/intel_icd.@host_cpu@.json + +vulkan/dev_icd.json : vulkan/intel_icd.@host_cpu@.json + cp vulkan/intel_icd.@host_cpu@.json $@ endif if HAVE_INTEL_VULKAN diff --git a/lib/mesa/src/intel/vulkan/anv_allocator.c b/lib/mesa/src/intel/vulkan/anv_allocator.c index e9cc57649..2dd9f8804 100644 --- a/lib/mesa/src/intel/vulkan/anv_allocator.c +++ b/lib/mesa/src/intel/vulkan/anv_allocator.c @@ -25,9 +25,21 @@ #include <unistd.h> #include <limits.h> #include <assert.h> +#ifdef __linux__ #include <linux/memfd.h> +#else +#include <fcntl.h> +#endif #include <sys/mman.h> +#ifndef MAP_POPULATE +#define MAP_POPULATE 0 +#endif + +#ifndef MFD_CLOEXEC +#define MFD_CLOEXEC O_CLOEXEC +#endif + #include "anv_private.h" #include "util/hash_table.h" @@ -115,7 +127,15 @@ struct anv_mmap_cleanup { static inline int memfd_create(const char *name, unsigned int flags) { +#ifdef __linux__ return syscall(SYS_memfd_create, name, flags); +#else + char template[] = "/tmp/mesa-XXXXXXXXXX"; + int fd = shm_mkstemp(template); + if (fd != -1) + shm_unlink(template); + return fd; +#endif } #endif diff --git a/lib/mesa/src/intel/vulkan/anv_device.c b/lib/mesa/src/intel/vulkan/anv_device.c index 99b512a03..0768b1aa2 100644 --- a/lib/mesa/src/intel/vulkan/anv_device.c +++ b/lib/mesa/src/intel/vulkan/anv_device.c @@ -25,7 +25,12 @@ #include <stdbool.h> #include <string.h> #include <sys/mman.h> +#ifdef __linux__ #include <sys/sysinfo.h> +#else +#include <sys/types.h> +#include <sys/sysctl.h> +#endif #include <unistd.h> #include <fcntl.h> #include <xf86drm.h> @@ -64,10 +69,22 @@ static uint64_t anv_compute_heap_size(int fd, uint64_t gtt_size) { /* Query the total ram from the system */ +#ifdef __linux__ struct sysinfo info; sysinfo(&info); uint64_t total_ram = (uint64_t)info.totalram * (uint64_t)info.mem_unit; +#else + int mib[2]; + uint64_t total_ram; + size_t size; + + mib[0] = CTL_HW; + mib[1] = HW_PHYSMEM64; + size = sizeof(total_ram); + if (sysctl(mib, 2, &total_ram, &size, NULL, 0) == -1) + return vk_error(VK_ERROR_INITIALIZATION_FAILED); +#endif /* We don't want to burn too much ram with the GPU. If the user has 4GiB * or less, we use at most half. If they have more than 4GiB, we use 3/4. diff --git a/lib/mesa/src/intel/vulkan/anv_private.h b/lib/mesa/src/intel/vulkan/anv_private.h index 9979b832a..c0d27df0b 100644 --- a/lib/mesa/src/intel/vulkan/anv_private.h +++ b/lib/mesa/src/intel/vulkan/anv_private.h @@ -32,6 +32,16 @@ #include <stdint.h> #include <i915_drm.h> +#include <errno.h> +#ifndef ETIME +#define ETIME ETIMEDOUT +#endif + +#include <time.h> +#ifndef CLOCK_MONOTONIC_RAW +#define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC +#endif + #ifdef HAVE_VALGRIND #include <valgrind.h> #include <memcheck.h> diff --git a/lib/mesa/src/intel/vulkan/anv_queue.c b/lib/mesa/src/intel/vulkan/anv_queue.c index 55465c5eb..7e6ae109a 100644 --- a/lib/mesa/src/intel/vulkan/anv_queue.c +++ b/lib/mesa/src/intel/vulkan/anv_queue.c @@ -27,7 +27,9 @@ #include <fcntl.h> #include <unistd.h> +#ifdef __linux__ #include <sys/eventfd.h> +#endif #include "anv_private.h" #include "vk_util.h" diff --git a/lib/mesa/src/util/futex.h b/lib/mesa/src/util/futex.h index 440289306..2ac0eb170 100644 --- a/lib/mesa/src/util/futex.h +++ b/lib/mesa/src/util/futex.h @@ -53,4 +53,24 @@ static inline int futex_wait(uint32_t *addr, int32_t value, const struct timespe #endif +#ifdef __OpenBSD__ + +#include <sys/time.h> +#include <sys/futex.h> + +static inline int futex_wake(uint32_t *addr, int count) +{ + return futex(addr, FUTEX_WAKE, count, NULL, NULL); +} + +static inline int futex_wait(uint32_t *addr, int32_t value, const struct timespec *timeout) +{ + struct timespec tsrel, tsnow; + clock_gettime(CLOCK_MONOTONIC, &tsnow); + timespecsub(timeout, &tsrel, &tsrel); + return futex(addr, FUTEX_WAIT, value, &tsrel, NULL); +} + +#endif + #endif /* UTIL_FUTEX_H */ |