Skip to content

Commit

Permalink
Add FreeBSD support
Browse files Browse the repository at this point in the history
  • Loading branch information
er2off committed Apr 14, 2024
1 parent 571948c commit a5cf130
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 5 deletions.
8 changes: 7 additions & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,13 @@ else
dxvk_wsi = get_option('dxvk_native_wsi')

if dxvk_wsi == 'sdl2'
lib_sdl2 = cpp.find_library('SDL2')
if platform == 'freebsd'
# kinda hacky
dxvk_include_dirs += ['/usr/local/include']
lib_sdl2 = dependency('SDL2', required: true)
else
lib_sdl2 = cpp.find_library('SDL2', required: true)
endif
compiler_args += ['-DDXVK_WSI_SDL2']
elif dxvk_wsi == 'glfw'
lib_glfw = cpp.find_library('glfw')
Expand Down
16 changes: 14 additions & 2 deletions package-native.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ shift 2
opt_nopackage=0
opt_devbuild=0
opt_buildid=false
opt_64_only=0
opt_32_only=0

CC=${CC:="gcc"}
CXX=${CXX:="g++"}
Expand All @@ -41,6 +43,12 @@ while [ $# -gt 0 ]; do
"--build-id")
opt_buildid=true
;;
"--64-only")
opt_64_only=1
;;
"--32-only")
opt_32_only=1
;;
*)
echo "Unrecognized option: $1" >&2
exit 1
Expand Down Expand Up @@ -81,8 +89,12 @@ function package {
rm -R "dxvk-native-$DXVK_VERSION"
}

build_arch 64 lib
build_arch 32 lib32
if [ $opt_32_only -eq 0 ]; then
build_arch 64 lib
fi
if [ $opt_64_only -eq 0 ]; then
build_arch 32 lib32
fi

if [ $opt_nopackage -eq 0 ]; then
package
Expand Down
4 changes: 4 additions & 0 deletions src/util/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,11 @@ namespace dxvk {
switch (priority) {
default:
case ThreadPriority::Normal: policy = SCHED_OTHER; break;
#ifndef __linux__
case ThreadPriority::Lowest: policy = SCHED_OTHER; break;
#else
case ThreadPriority::Lowest: policy = SCHED_IDLE; break;
#endif
}
::pthread_setschedparam(this->native_handle(), policy, &param);
}
Expand Down
14 changes: 14 additions & 0 deletions src/util/util_env.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
#ifdef __linux__
#include <unistd.h>
#include <limits.h>
#elif defined(__FreeBSD__)
#include <sys/sysctl.h>
#include <unistd.h>
#endif

#include "util_env.h"
Expand Down Expand Up @@ -85,6 +88,17 @@ namespace dxvk::env {
size_t count = readlink("/proc/self/exe", exePath.data(), exePath.size());

return std::string(exePath.begin(), exePath.begin() + count);
#elif defined(__FreeBSD__)
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, getpid()};
std::string exePath(PATH_MAX, '\0');
size_t size = exePath.size();

if (sysctl(mib, 4, exePath.data(), &size, NULL, 0) != 0) {
// throw error here?
return "";
}

return exePath;
#endif
}

Expand Down
2 changes: 1 addition & 1 deletion src/util/util_win32_compat.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#if defined(__linux__)
#if defined(__unix__)

#include <windows.h>
#include <dlfcn.h>
Expand Down
2 changes: 1 addition & 1 deletion src/wsi/sdl2/wsi_platform_sdl2.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ namespace dxvk::wsi {
return displayId < displayCount && displayId >= 0;
}

}
}

0 comments on commit a5cf130

Please sign in to comment.