# HG changeset patch # User sam # Date 1736572941 -25200 # Node ID 075e4197bc95bc56bb7f092aa95530629bac3d76 # Parent 0daed956cf9e6d9e14917906775c3e39b46dc9ea add: vulkan debug labels, did: improve build-config diff -r 0daed956cf9e -r 075e4197bc95 semicongine/build.nim --- a/semicongine/build.nim Fri Jan 10 00:09:59 2025 +0700 +++ b/semicongine/build.nim Sat Jan 11 12:22:21 2025 +0700 @@ -36,20 +36,14 @@ return builddir / buildname / platformDir / projectName() proc semicongine_build_switches*(buildname: string, builddir = "./build") = - switch("experimental", "strictEffects") switch("experimental", "strictFuncs") - switch("define", "nimPreviewHashRef") - if defined(linux): - switch("define", "VK_USE_PLATFORM_XLIB_KHR") - elif defined(windows): - switch("define", "VK_USE_PLATFORM_WIN32_KHR") + # switch("define", "nimPreviewHashRef") + if defined(windows): switch("app", "gui") - else: - raise newException(Exception, "Unsupported platform") switch("outdir", semicongine_builddir(buildname, builddir = builddir)) + # adds directory of executable to dynlib search path switch("passL", "-Wl,-rpath,'$ORIGIN'") - # adds directory of executable to dynlib search path proc semicongine_pack*( outdir: string, bundleType: string, resourceRoot: string, withSteam: bool diff -r 0daed956cf9e -r 075e4197bc95 semicongine/core/buildconfig.nim --- a/semicongine/core/buildconfig.nim Fri Jan 10 00:09:59 2025 +0700 +++ b/semicongine/core/buildconfig.nim Sat Jan 11 12:22:21 2025 +0700 @@ -1,16 +1,5 @@ const ENGINENAME = "semiconginev2" -# checks required build options: -static: - if defined(linux): - assert defined(VK_USE_PLATFORM_XLIB_KHR), - ENGINENAME & " requires --d:VK_USE_PLATFORM_XLIB_KHR for linux builds" - elif defined(windows): - assert defined(VK_USE_PLATFORM_WIN32_KHR), - ENGINENAME & " requires --d:VK_USE_PLATFORM_WIN32_KHR for windows builds" - else: - assert false, "trying to build on unsupported platform" - # build configuration # ===================== diff -r 0daed956cf9e -r 075e4197bc95 semicongine/rendering/shaders.nim --- a/semicongine/rendering/shaders.nim Fri Jan 10 00:09:59 2025 +0700 +++ b/semicongine/rendering/shaders.nim Sat Jan 11 12:22:21 2025 +0700 @@ -506,6 +506,22 @@ ): Pipeline[TShader] = (result.vertexShaderModule, result.fragmentShaderModule) = compileShader(shader) + when not defined(release): + let vertName = VkDebugUtilsObjectNameInfoEXT( + sType: VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + objectType: VK_OBJECT_TYPE_SHADER_MODULE, + objectHandle: result.vertexShaderModule.uint64, + pObjectName: $(TShader) & "-vert", + ) + checkVkResult engine().vulkan.device.vkSetDebugUtilsObjectNameEXT(addr vertName) + let fragName = VkDebugUtilsObjectNameInfoEXT( + sType: VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + objectType: VK_OBJECT_TYPE_SHADER_MODULE, + objectHandle: result.fragmentShaderModule.uint64, + pObjectName: $(TShader) & "-frag", + ) + checkVkResult engine().vulkan.device.vkSetDebugUtilsObjectNameEXT(addr fragName) + result.descriptorSetLayouts = createDescriptorSetLayouts[TShader]() # TODO: only add pushConstants if shader actually uses them diff -r 0daed956cf9e -r 075e4197bc95 semicongine/rendering/vulkan/api.nim --- a/semicongine/rendering/vulkan/api.nim Fri Jan 10 00:09:59 2025 +0700 +++ b/semicongine/rendering/vulkan/api.nim Sat Jan 11 12:22:21 2025 +0700 @@ -18585,10 +18585,12 @@ "VK_NV_compute_shader_derivatives": loadVK_NV_compute_shader_derivatives, "VK_QCOM_fragment_density_map_offset": loadVK_QCOM_fragment_density_map_offset, }.toTable -when defined(VK_USE_PLATFORM_XLIB_KHR): + +# we only support xlib on linux atm +when defined(linux): include ./platform/xlib EXTENSION_LOADERS["VK_KHR_xlib_surface"] = loadVK_KHR_xlib_surface -when defined(VK_USE_PLATFORM_WIN32_KHR): +when defined(windows): include ./platform/win32 EXTENSION_LOADERS["VK_KHR_external_semaphore_win32"] = loadVK_KHR_external_semaphore_win32