Merge remote-tracking branch 'origin/master'

This commit is contained in:
Wojtek Figat
2023-02-15 11:16:17 +01:00
3 changed files with 55 additions and 22 deletions

View File

@@ -40,20 +40,29 @@ public sealed class VulkanSdk : Sdk
return;
var vulkanSdk = Environment.GetEnvironmentVariable("VULKAN_SDK");
if (platform == TargetPlatform.Mac && (vulkanSdk == null || !Directory.Exists(vulkanSdk)))
if (vulkanSdk == null || !Directory.Exists(vulkanSdk))
{
// Try to guess install location for the current user
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "VulkanSDK");
if (Directory.Exists(path))
if (platform == TargetPlatform.Mac)
{
var subDirs = Directory.GetDirectories(path);
if (subDirs.Length != 0)
// Try to guess install location for the current user
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "VulkanSDK");
if (Directory.Exists(path))
{
path = Path.Combine(subDirs[0], "macOS");
if (Directory.Exists(path))
vulkanSdk = path;
var subDirs = Directory.GetDirectories(path);
if (subDirs.Length != 0)
{
path = Path.Combine(subDirs[0], "macOS");
if (Directory.Exists(path))
vulkanSdk = path;
}
}
}
else if (platform == TargetPlatform.Linux)
{
// Try to use system-installed Vulkan SDK
if (File.Exists("/usr/include/vulkan/vulkan.h"))
vulkanSdk = "/usr/include";
}
}
if (vulkanSdk != null)
{
@@ -87,13 +96,20 @@ public sealed class VulkanSdk : Sdk
{
var vulkanSdk = RootPath;
// Use system-installed headers
if (vulkanSdk.EndsWith("/include") && Directory.Exists(vulkanSdk))
{
includesFolderPath = vulkanSdk;
return true;
}
// Check potential location with headers
var includes = new[]
{
Path.Combine(vulkanSdk, "include"),
Path.Combine(vulkanSdk, "Include"),
Path.Combine(vulkanSdk, "x86_64", "include"),
};
foreach (var include in includes)
{
if (Directory.Exists(include))

View File

@@ -840,17 +840,17 @@ int X11ErrorHandler(X11::Display* display, X11::XErrorEvent* event)
int32 CalculateDpi()
{
// in X11 a screen is not necessarily identical to a desktop
// so we need to stick to one type for pixel and physical size query
int dpi = 96;
char* resourceString = X11::XResourceManagerString(xDisplay);
if (resourceString == NULL)
return dpi;
int screenIdx = 0;
int widthMM = X11_DisplayWidthMM(xDisplay, screenIdx);
int heightMM = X11_DisplayHeightMM(xDisplay, screenIdx);
double xdpi = (widthMM ? X11_DisplayWidth(xDisplay, screenIdx) / (double)widthMM * 25.4 : 0);
double ydpi = (heightMM ? X11_DisplayHeight(xDisplay, screenIdx) / (double)heightMM * 25.4 : 0);
if (xdpi || ydpi)
return (int32)Math::Ceil((xdpi + ydpi) / (xdpi && ydpi ? 2 : 1));
return 96;
char* type = NULL;
X11::XrmValue value;
X11::XrmDatabase database = X11::XrmGetStringDatabase(resourceString);
if (X11::XrmGetResource(database, "Xft.dpi", "String", &type, &value) == 1 && value.addr != NULL)
dpi = (int)atof(value.addr);
return dpi;
}
// Maps Flax key codes to X11 names for physical key locations.
@@ -2101,6 +2101,7 @@ bool LinuxPlatform::Init()
xAtomWmName = X11::XInternAtom(xDisplay, "_NET_WM_NAME", 0);
xAtomClipboard = X11::XInternAtom(xDisplay, "CLIPBOARD", 0);
X11::XrmInitialize();
SystemDpi = CalculateDpi();
int cursorSize = X11::XcursorGetDefaultSize(xDisplay);

View File

@@ -24,14 +24,30 @@ namespace Flax.Build.Platforms
{
// Setup system paths
var includePath = Path.Combine(ToolsetRoot, "usr", "include");
if (!Directory.Exists(includePath))
{
var error = $"Missing toolset header files location {includePath}";
Log.Error(error);
}
SystemIncludePaths.Add(includePath);
var cppIncludePath = Path.Combine(includePath, "c++", ClangVersion.ToString());
if (Directory.Exists(cppIncludePath))
SystemIncludePaths.Add(cppIncludePath);
if (!Directory.Exists(cppIncludePath))
{
var error = $"Missing Clang {ClangVersion} C++ header files location {cppIncludePath}";
cppIncludePath = Path.Combine(ToolsetRoot, "usr", "lib", "llvm-" + ClangVersion.Major.ToString(), "include", "c++", "v1");
if (!Directory.Exists(cppIncludePath))
Log.Error(error);
}
SystemIncludePaths.Add(cppIncludePath);
var clangLibPath = Path.Combine(ToolsetRoot, "usr", "lib", "clang");
var clangIncludePath = Path.Combine(clangLibPath, ClangVersion.Major.ToString(), "include");
if (!Directory.Exists(clangIncludePath))
{
var error = $"Missing Clang {ClangVersion} header files location {clangIncludePath}";
clangIncludePath = Path.Combine(clangLibPath, ClangVersion.ToString(), "include");
if (!Directory.Exists(clangIncludePath))
Log.Error(error);
}
SystemIncludePaths.Add(clangIncludePath);
}