initial mac nixos config
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
{ lib
|
||||
, fetchFromGitLab
|
||||
, mesa
|
||||
, meson
|
||||
, llvmPackages
|
||||
}:
|
||||
|
||||
(mesa.override {
|
||||
galliumDrivers = [ "swrast" "asahi" ];
|
||||
vulkanDrivers = [ "swrast" ];
|
||||
enableGalliumNine = false;
|
||||
# libclc and other OpenCL components are needed for geometry shader support on Apple Silicon
|
||||
enableOpenCL = true;
|
||||
}).overrideAttrs (oldAttrs: {
|
||||
# version must be the same length (i.e. no unstable or date)
|
||||
# so that system.replaceRuntimeDependencies can work
|
||||
version = "24.1.0";
|
||||
src = fetchFromGitLab {
|
||||
# tracking: https://pagure.io/fedora-asahi/mesa/commits/asahi
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "asahi";
|
||||
repo = "mesa";
|
||||
rev = "asahi-20240228";
|
||||
hash = "sha256-wOFJyYfoN6yxE9HaHXLP/0MhjyRvmlb+jPPUke0sbbE=";
|
||||
};
|
||||
|
||||
mesonFlags =
|
||||
# remove flag to configure xvmc functionality as having it
|
||||
# breaks the build because that no longer exists in Mesa 23
|
||||
(lib.filter (x: !(lib.hasPrefix "-Dxvmc-libs-path=" x)) oldAttrs.mesonFlags) ++ [
|
||||
# we do not build any graphics drivers these features can be enabled for
|
||||
"-Dgallium-va=disabled"
|
||||
"-Dgallium-vdpau=disabled"
|
||||
"-Dgallium-xa=disabled"
|
||||
# does not make any sense
|
||||
"-Dandroid-libbacktrace=disabled"
|
||||
# do not want to add the dependencies
|
||||
"-Dlibunwind=disabled"
|
||||
"-Dlmsensors=disabled"
|
||||
] ++ ( # does not compile on nixpkgs stable, doesn't seem mandatory
|
||||
lib.optional (lib.versionOlder meson.version "1.3.1")
|
||||
"-Dgallium-rusticl=false");
|
||||
|
||||
# replace patches with ones tweaked slightly to apply to this version
|
||||
patches = [
|
||||
./disk_cache-include-dri-driver-path-in-cache-key.patch
|
||||
./opencl.patch
|
||||
];
|
||||
})
|
||||
@@ -0,0 +1,67 @@
|
||||
Author: David McFarland <corngood@gmail.com>
|
||||
Date: Mon Aug 6 15:52:11 2018 -0300
|
||||
|
||||
[PATCH] disk_cache: include dri driver path in cache key
|
||||
|
||||
This fixes invalid cache hits on NixOS where all shared library
|
||||
timestamps in /nix/store are zero.
|
||||
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index 512e05d..93001da 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -513,6 +513,13 @@ option(
|
||||
description : 'Enable direct rendering in GLX and EGL for DRI',
|
||||
)
|
||||
|
||||
+option(
|
||||
+ 'disk-cache-key',
|
||||
+ type : 'string',
|
||||
+ value : '',
|
||||
+ description : 'Mesa cache key.'
|
||||
+)
|
||||
+
|
||||
option('egl-lib-suffix',
|
||||
type : 'string',
|
||||
value : '',
|
||||
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
|
||||
index 8298f9d..e622133 100644
|
||||
--- a/src/util/disk_cache.c
|
||||
+++ b/src/util/disk_cache.c
|
||||
@@ -226,8 +226,10 @@ disk_cache_type_create(const char *gpu_name,
|
||||
|
||||
/* Create driver id keys */
|
||||
size_t id_size = strlen(driver_id) + 1;
|
||||
+ size_t key_size = strlen(DISK_CACHE_KEY) + 1;
|
||||
size_t gpu_name_size = strlen(gpu_name) + 1;
|
||||
cache->driver_keys_blob_size += id_size;
|
||||
+ cache->driver_keys_blob_size += key_size;
|
||||
cache->driver_keys_blob_size += gpu_name_size;
|
||||
|
||||
/* We sometimes store entire structs that contains a pointers in the cache,
|
||||
@@ -248,6 +250,7 @@ disk_cache_type_create(const char *gpu_name,
|
||||
uint8_t *drv_key_blob = cache->driver_keys_blob;
|
||||
DRV_KEY_CPY(drv_key_blob, &cache_version, cv_size)
|
||||
DRV_KEY_CPY(drv_key_blob, driver_id, id_size)
|
||||
+ DRV_KEY_CPY(drv_key_blob, DISK_CACHE_KEY, key_size)
|
||||
DRV_KEY_CPY(drv_key_blob, gpu_name, gpu_name_size)
|
||||
DRV_KEY_CPY(drv_key_blob, &ptr_size, ptr_size_size)
|
||||
DRV_KEY_CPY(drv_key_blob, &driver_flags, driver_flags_size)
|
||||
diff --git a/src/util/meson.build b/src/util/meson.build
|
||||
index c0c1b9d..442163c 100644
|
||||
--- a/src/util/meson.build
|
||||
+++ b/src/util/meson.build
|
||||
@@ -268,7 +268,12 @@ _libmesa_util = static_library(
|
||||
include_directories : [inc_util, include_directories('format')],
|
||||
dependencies : deps_for_libmesa_util,
|
||||
link_with: [libmesa_util_sse41],
|
||||
- c_args : [c_msvc_compat_args],
|
||||
+ c_args : [
|
||||
+ c_msvc_compat_args,
|
||||
+ '-DDISK_CACHE_KEY="@0@"'.format(
|
||||
+ get_option('disk-cache-key')
|
||||
+ ),
|
||||
+ ],
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
build_by_default : false
|
||||
)
|
||||
@@ -0,0 +1,84 @@
|
||||
From bbd0f154183e4d26a14bb005f6afc636629c201e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Watson <twatson52@icloud.com>
|
||||
Date: Sat, 16 Dec 2023 20:46:51 -0600
|
||||
Subject: [PATCH] opencl.patch from nixpkgs
|
||||
f416128e90ac75bec060e8b9435fe9c38423c036
|
||||
|
||||
---
|
||||
meson.build | 2 +-
|
||||
meson_options.txt | 6 ++++++
|
||||
src/gallium/targets/opencl/meson.build | 6 +++---
|
||||
src/gallium/targets/rusticl/meson.build | 3 +--
|
||||
4 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 552ff196aa8..9e10156b875 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -1829,7 +1829,7 @@ endif
|
||||
|
||||
dep_clang = null_dep
|
||||
if with_clc
|
||||
- llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir')
|
||||
+ llvm_libdir = get_option('clang-libdir')
|
||||
|
||||
dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
|
||||
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index c76fa6d3382..d2021f55634 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -1,6 +1,12 @@
|
||||
# Copyright © 2017-2019 Intel Corporation
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
+option(
|
||||
+ 'clang-libdir',
|
||||
+ type : 'string',
|
||||
+ value : '',
|
||||
+ description : 'Locations to search for clang libraries.'
|
||||
+)
|
||||
option(
|
||||
'platforms',
|
||||
type : 'array',
|
||||
diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build
|
||||
index 7c14135898e..cbcd67cc443 100644
|
||||
--- a/src/gallium/targets/opencl/meson.build
|
||||
+++ b/src/gallium/targets/opencl/meson.build
|
||||
@@ -39,7 +39,8 @@ if dep_llvm.version().version_compare('>=10.0.0')
|
||||
polly_isl_dep = cpp.find_library('PollyISL', dirs : llvm_libdir, required : false)
|
||||
endif
|
||||
|
||||
-dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false)
|
||||
+clang_libdir = get_option('clang-libdir')
|
||||
+dep_clang = cpp.find_library('clang-cpp', dirs : clang_libdir, required : false)
|
||||
|
||||
# meson will return clang-cpp from system dirs if it's not found in llvm_libdir
|
||||
linker_rpath_arg = '-Wl,--rpath=@0@'.format(llvm_libdir)
|
||||
@@ -123,8 +124,7 @@ if with_opencl_icd
|
||||
configuration : _config,
|
||||
input : 'mesa.icd.in',
|
||||
output : 'mesa.icd',
|
||||
- install : true,
|
||||
- install_tag : 'runtime',
|
||||
+ install : false,
|
||||
install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'),
|
||||
)
|
||||
|
||||
diff --git a/src/gallium/targets/rusticl/meson.build b/src/gallium/targets/rusticl/meson.build
|
||||
index b2963fe6dfa..2f784bdccd4 100644
|
||||
--- a/src/gallium/targets/rusticl/meson.build
|
||||
+++ b/src/gallium/targets/rusticl/meson.build
|
||||
@@ -76,8 +76,7 @@ configure_file(
|
||||
configuration : _config,
|
||||
input : 'rusticl.icd.in',
|
||||
output : 'rusticl.icd',
|
||||
- install : true,
|
||||
- install_tag : 'runtime',
|
||||
+ install : false,
|
||||
install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'),
|
||||
)
|
||||
|
||||
--
|
||||
2.40.1
|
||||
|
||||
Reference in New Issue
Block a user