changeset 1426:075e4197bc95

add: vulkan debug labels, did: improve build-config
author sam <sam@basx.dev>
date Sat, 11 Jan 2025 12:22:21 +0700
parents 0daed956cf9e
children 676fc13685a9
files semicongine/build.nim semicongine/core/buildconfig.nim semicongine/rendering/shaders.nim semicongine/rendering/vulkan/api.nim
diffstat 4 files changed, 23 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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
 # =====================
 
--- 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
--- 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