This commit is contained in:
Mars 2024-11-05 19:47:37 -05:00
parent 0f7c86bd4b
commit 450c92ec55
Signed by: pupbrained
GPG key ID: 0FF5B8826803F895
3 changed files with 14 additions and 13 deletions

View file

@ -53,11 +53,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1729632202, "lastModified": 1730853263,
"narHash": "sha256-BqWFOqG9Iuzf5wm9dyVWPeH1SPxSjCxo3inUSnYqxaQ=", "narHash": "sha256-Cnp2zjzaA4bYUOhM/xo9GxhgOgTHn+qNbSGu4su8RaQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5a95c26209c2e136ef7da309824f562253b5fd7a", "rev": "5d4d64e923ce570996c089d768710f61bde0b9d3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -126,11 +126,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1729613947, "lastModified": 1730321837,
"narHash": "sha256-XGOvuIPW1XRfPgHtGYXd5MAmJzZtOuwlfKDgxX5KT3s=", "narHash": "sha256-vK+a09qq19QNu2MlLcvN4qcRctJbqWkX7ahgPZ/+maI=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "aac86347fb5063960eccb19493e0cadcdb4205ca", "rev": "746901bb8dba96d154b66492a29f5db0693dbfcc",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -14,6 +14,7 @@ common_cpp_args = [
'-Wno-c++98-compat-pedantic', '-Wno-c++98-compat-pedantic',
'-Wno-pre-c++20-compat-pedantic', '-Wno-pre-c++20-compat-pedantic',
'-Wno-padded', '-Wno-padded',
'-mavx2'
] ]
add_project_arguments(cpp.get_supported_arguments(common_cpp_args), language: 'cpp') add_project_arguments(cpp.get_supported_arguments(common_cpp_args), language: 'cpp')

View file

@ -33,13 +33,13 @@ class ShaderCompiler {
) -> std::vector<u32> { ) -> std::vector<u32> {
using namespace std; using namespace std;
const string cacheFile = getCacheFilePath(shaderName); const filesystem::path cacheFile = getCacheFilePath(shaderName);
// Try loading from cache first // Try loading from cache first
vector<u32> spirvCode = loadCachedShader(cacheFile); vector<u32> spirvCode = loadCachedShader(cacheFile);
if (!spirvCode.empty()) { if (!spirvCode.empty()) {
fmt::println("Loaded shader from cache: {}", cacheFile); fmt::println("Loaded shader from cache: {}", cacheFile.string());
return spirvCode; return spirvCode;
} }
@ -64,7 +64,7 @@ class ShaderCompiler {
* This function determines the appropriate directory for caching shaders * This function determines the appropriate directory for caching shaders
* based on the operating system and returns the full path for the specified shader name. * based on the operating system and returns the full path for the specified shader name.
*/ */
static fn getCacheFilePath(const string& shaderName) -> string { static fn getCacheFilePath(const string& shaderName) -> std::filesystem::path {
using namespace std::filesystem; using namespace std::filesystem;
#ifdef _WIN32 #ifdef _WIN32
@ -78,7 +78,7 @@ class ShaderCompiler {
if (!exists(cacheDir)) if (!exists(cacheDir))
create_directories(cacheDir); // Create the directory if it doesn't exist create_directories(cacheDir); // Create the directory if it doesn't exist
return (cacheDir / (shaderName + ".spv")).string(); return cacheDir / (shaderName + ".spv");
} }
/** /**
@ -117,7 +117,7 @@ class ShaderCompiler {
* This function checks if the specified cache file exists and reads its * This function checks if the specified cache file exists and reads its
* contents into a vector. If the file cannot be opened, an exception is thrown. * contents into a vector. If the file cannot be opened, an exception is thrown.
*/ */
static fn loadCachedShader(const string& cacheFile) -> std::vector<u32> { static fn loadCachedShader(const std::filesystem::path& cacheFile) -> std::vector<u32> {
using namespace std; using namespace std;
if (!filesystem::exists(cacheFile)) if (!filesystem::exists(cacheFile))
@ -127,14 +127,14 @@ class ShaderCompiler {
// Check if the file was successfully opened // Check if the file was successfully opened
if (!file) if (!file)
throw runtime_error("Failed to open cached shader file: " + cacheFile); throw runtime_error("Failed to open cached shader file: " + cacheFile.string());
usize fileSize = filesystem::file_size(cacheFile); usize fileSize = filesystem::file_size(cacheFile);
vector<u32> spirvCode(fileSize / sizeof(u32)); vector<u32> spirvCode(fileSize / sizeof(u32));
// Read entire file content into the vector // Read entire file content into the vector
if (!file.read(bit_cast<char*>(spirvCode.data()), static_cast<streamsize>(fileSize))) if (!file.read(bit_cast<char*>(spirvCode.data()), static_cast<streamsize>(fileSize)))
throw runtime_error("Failed to read cached shader file: " + cacheFile); throw runtime_error("Failed to read cached shader file: " + cacheFile.string());
return spirvCode; return spirvCode;
} }