From e1868c752ff175cfcc30245c5a460129d2d5b609 Mon Sep 17 00:00:00 2001 From: NightFox <0x4E69676874466F78@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:55:12 +0300 Subject: [PATCH 1/5] Improved warning when there are no ray extensions fix #670 --- ref/vk/vk_core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ref/vk/vk_core.c b/ref/vk/vk_core.c index ee9023a2..67b10bec 100644 --- a/ref/vk/vk_core.c +++ b/ref/vk/vk_core.c @@ -425,6 +425,20 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { this_device->calibrated_timestamps = deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_extra, ARRAYSIZE(device_extensions_extra)); + if (!this_device->ray_tracing) { + #if defined XASH_64BIT + gEngine.Con_Printf( "^6================================================^7\n" ); + gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.\n^3Check that you have compatible hardware and drivers.^7\n"); + gEngine.Con_Printf( "^6================================================^7\n" ); + #else + gEngine.Con_Printf( "^6================================================^7\n" ); + gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); + gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); + gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); + gEngine.Con_Printf( "^6================================================^7\n" ); + #endif + } + Mem_Free(extensions); } From 1a9f97bb143944dd2142e4781f3995f8ee18c93c Mon Sep 17 00:00:00 2001 From: NightFox <0x4E69676874466F78@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:31:20 +0300 Subject: [PATCH 2/5] Added warnings about 32bit when configure --- ref/vk/wscript | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ref/vk/wscript b/ref/vk/wscript index 57066be6..6270e957 100644 --- a/ref/vk/wscript +++ b/ref/vk/wscript @@ -60,6 +60,12 @@ def configure(conf): conf.env.LIB_AFTERMATH = [lib] conf.end_msg('SDK: {0}, includes: {1}, libpath: {2}, lib: {3}'.format(path, conf.env.INCLUDES_AFTERMATH, conf.env.LIBPATH_AFTERMATH, conf.env.LIB_AFTERMATH)) + if not conf.options.ALLOW64: + Logs.warn('\x1b[35;20m==============================================================') + Logs.error('\x1b[33;20mNo ray tracing extensions in \x1b[31;1m32-bit \x1b[33;20mmode!') + Logs.warn("Note that Ray Tracing REQUIRES \x1b[32;1m64-bit \x1b[33;20mprocess!\n\x1b[36;20mPlease configure with the 64-bit using \x1b[32;1m-8 \x1b[36;20mor \x1b[32;1m--64bits \x1b[36;20mflags."); + Logs.warn('\x1b[35;20m==============================================================') + # TODO if debug conf.env.GLSLCFLAGS += ['-g', '-O'] From 852b7c28ba0cefdd1fca72cb0ee0da6fda3b9413 Mon Sep 17 00:00:00 2001 From: NightFox <0x4E69676874466F78@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:56:35 +0300 Subject: [PATCH 3/5] Slight improvement of code --- ref/vk/vk_core.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ref/vk/vk_core.c b/ref/vk/vk_core.c index 67b10bec..235883f9 100644 --- a/ref/vk/vk_core.c +++ b/ref/vk/vk_core.c @@ -426,17 +426,15 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { this_device->calibrated_timestamps = deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_extra, ARRAYSIZE(device_extensions_extra)); if (!this_device->ray_tracing) { - #if defined XASH_64BIT - gEngine.Con_Printf( "^6================================================^7\n" ); - gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.\n^3Check that you have compatible hardware and drivers.^7\n"); - gEngine.Con_Printf( "^6================================================^7\n" ); - #else - gEngine.Con_Printf( "^6================================================^7\n" ); + gEngine.Con_Printf( "^6===================================================^7\n" ); gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); + #if defined XASH_64BIT + gEngine.Con_Printf(S_NOTE "^3Check that you have compatible hardware and drivers.^7\n"); + #else gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); - gEngine.Con_Printf( "^6================================================^7\n" ); #endif + gEngine.Con_Printf( "^6===================================================^7\n" ); } Mem_Free(extensions); From 0d3c9ba88daac7155f69ccb23022810317569a08 Mon Sep 17 00:00:00 2001 From: NightFox <0x4E69676874466F78@users.noreply.github.com> Date: Tue, 12 Dec 2023 19:46:04 +0300 Subject: [PATCH 4/5] Warning after getting a candidate --- ref/vk/vk_core.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ref/vk/vk_core.c b/ref/vk/vk_core.c index 235883f9..4b38eaf0 100644 --- a/ref/vk/vk_core.c +++ b/ref/vk/vk_core.c @@ -425,18 +425,6 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { this_device->calibrated_timestamps = deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_extra, ARRAYSIZE(device_extensions_extra)); - if (!this_device->ray_tracing) { - gEngine.Con_Printf( "^6===================================================^7\n" ); - gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); - #if defined XASH_64BIT - gEngine.Con_Printf(S_NOTE "^3Check that you have compatible hardware and drivers.^7\n"); - #else - gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); - gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); - #endif - gEngine.Con_Printf( "^6===================================================^7\n" ); - } - Mem_Free(extensions); } @@ -485,9 +473,9 @@ static qboolean createDevice( void ) { char unique_deviceID[16]; const qboolean is_target_device = vk_device_target_id && Q_stricmp(vk_device_target_id->string, "") && num_available_devices > 0; qboolean is_target_device_found = false; - + vk_available_device_t *candidate_device; for (int i = 0; i < num_available_devices; ++i) { - const vk_available_device_t *candidate_device = available_devices + i; + candidate_device = available_devices + i; // Skip non-target device Q_snprintf( unique_deviceID, sizeof( unique_deviceID ), "%04x:%04x", candidate_device->props.vendorID, candidate_device->props.deviceID ); if (is_target_device && !is_target_device_found && Q_stricmp(vk_device_target_id->string, unique_deviceID)) { @@ -642,6 +630,20 @@ static qboolean createDevice( void ) { } vkGetDeviceQueue(vk_core.device, 0, 0, &vk_core.queue); + is_target_device_found = true; + } + if (is_target_device_found) { + if (!candidate_device->ray_tracing && !CVAR_TO_BOOL(rt_force_disable)) { + gEngine.Con_Printf( "^6===================================================^7\n" ); + gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); + #if defined XASH_64BIT + gEngine.Con_Printf(S_NOTE "^3Check that you have compatible hardware and drivers.^7\n"); + #else + gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); + gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); + #endif + gEngine.Con_Printf( "^6===================================================^7\n" ); + } return true; } From 726572b78c326f27a7111b5b2e60457cdf0f2a48 Mon Sep 17 00:00:00 2001 From: NightFox <0x4E69676874466F78@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:13:48 +0300 Subject: [PATCH 5/5] minor reorganization --- ref/vk/vk_core.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/ref/vk/vk_core.c b/ref/vk/vk_core.c index 4b38eaf0..a7c3e334 100644 --- a/ref/vk/vk_core.c +++ b/ref/vk/vk_core.c @@ -327,6 +327,8 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { *available_devices = Mem_Malloc(vk_core.pool, num_physical_devices * sizeof(vk_available_device_t)); this_device = *available_devices; + + qboolean has_rt = false; for (uint32_t i = 0; i < num_physical_devices; ++i) { uint32_t queue_index = VK_QUEUE_FAMILY_IGNORED; VkPhysicalDeviceProperties props; @@ -417,7 +419,7 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { this_device->anisotropy = features.features.samplerAnisotropy; gEngine.Con_Printf("\t\tAnistoropy supported: %d\n", this_device->anisotropy); - this_device->ray_tracing = deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_rt, ARRAYSIZE(device_extensions_rt)); + has_rt |= this_device->ray_tracing = deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_rt, ARRAYSIZE(device_extensions_rt)); gEngine.Con_Printf("\t\tRay tracing supported: %d\n", this_device->ray_tracing); this_device->nv_checkpoint = vk_core.debug && deviceSupportsExtensions(extensions, num_device_extensions, device_extensions_nv_checkpoint, ARRAYSIZE(device_extensions_nv_checkpoint)); @@ -436,6 +438,18 @@ static int enumerateDevices( vk_available_device_t **available_devices ) { } Mem_Free(physical_devices); + + if (!has_rt) { + gEngine.Con_Printf( "^6===================================================^7\n" ); + gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); + #if defined XASH_64BIT + gEngine.Con_Printf(S_NOTE "^3Check that you have compatible hardware and drivers.^7\n"); + #else + gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); + gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); + #endif + gEngine.Con_Printf( "^6===================================================^7\n" ); + } return this_device - *available_devices; } @@ -473,9 +487,9 @@ static qboolean createDevice( void ) { char unique_deviceID[16]; const qboolean is_target_device = vk_device_target_id && Q_stricmp(vk_device_target_id->string, "") && num_available_devices > 0; qboolean is_target_device_found = false; - vk_available_device_t *candidate_device; + for (int i = 0; i < num_available_devices; ++i) { - candidate_device = available_devices + i; + const vk_available_device_t *candidate_device = available_devices + i; // Skip non-target device Q_snprintf( unique_deviceID, sizeof( unique_deviceID ), "%04x:%04x", candidate_device->props.vendorID, candidate_device->props.deviceID ); if (is_target_device && !is_target_device_found && Q_stricmp(vk_device_target_id->string, unique_deviceID)) { @@ -630,20 +644,6 @@ static qboolean createDevice( void ) { } vkGetDeviceQueue(vk_core.device, 0, 0, &vk_core.queue); - is_target_device_found = true; - } - if (is_target_device_found) { - if (!candidate_device->ray_tracing && !CVAR_TO_BOOL(rt_force_disable)) { - gEngine.Con_Printf( "^6===================================================^7\n" ); - gEngine.Con_Printf(S_ERROR "^1No ray tracing extensions found.^7\n"); - #if defined XASH_64BIT - gEngine.Con_Printf(S_NOTE "^3Check that you have compatible hardware and drivers.^7\n"); - #else - gEngine.Con_Printf(S_WARN "^3You're running in ^132-bit ^3mode!^7\n"); - gEngine.Con_Printf(S_NOTE "^3Ray Tracing REQUIRES ^264-bit ^3process!\n^5Please rebuild and start the 64-bit xash3d binary.^7\n"); - #endif - gEngine.Con_Printf( "^6===================================================^7\n" ); - } return true; }