From 218820e8dc2d69c21a7a0775b5c47f2c447ed31a Mon Sep 17 00:00:00 2001 From: PancakeTAS Date: Sat, 25 Apr 2026 20:52:18 +0200 Subject: [PATCH] chore: Adjust to new compiler warnings --- lsfg-vk-backend/.clang-tidy | 4 + lsfg-vk-backend/src/extraction/dll_reader.cpp | 96 ++++++++++--------- .../src/extraction/shader_registry.cpp | 9 +- .../src/helpers/managed_shader.cpp | 4 +- lsfg-vk-backend/src/lsfgvk.cpp | 4 +- lsfg-vk-backend/src/shaderchains/alpha0.cpp | 6 +- lsfg-vk-backend/src/shaderchains/alpha1.cpp | 2 +- lsfg-vk-backend/src/shaderchains/beta0.cpp | 2 +- lsfg-vk-backend/src/shaderchains/beta1.cpp | 8 +- lsfg-vk-backend/src/shaderchains/delta0.cpp | 4 +- lsfg-vk-backend/src/shaderchains/gamma0.cpp | 2 +- lsfg-vk-backend/src/shaderchains/generate.cpp | 2 +- lsfg-vk-backend/src/shaderchains/mipmaps.cpp | 2 +- lsfg-vk-cli/.clang-tidy | 2 + lsfg-vk-cli/src/tools/benchmark.cpp | 2 +- lsfg-vk-cli/src/tools/debug.cpp | 2 +- lsfg-vk-common/.clang-tidy | 4 + .../lsfg-vk-common/configuration/config.hpp | 5 +- .../configuration/detection.hpp | 3 +- .../lsfg-vk-common/helpers/pointers.hpp | 2 +- lsfg-vk-common/src/vulkan/vulkan.cpp | 2 +- lsfg-vk-layer/.clang-tidy | 2 + lsfg-vk-layer/src/instance.cpp | 2 +- lsfg-vk-ui/.clang-tidy | 2 + lsfg-vk-ui/src/backend.hpp | 4 +- 25 files changed, 98 insertions(+), 79 deletions(-) diff --git a/lsfg-vk-backend/.clang-tidy b/lsfg-vk-backend/.clang-tidy index a659a27..2b3d77b 100644 --- a/lsfg-vk-backend/.clang-tidy +++ b/lsfg-vk-backend/.clang-tidy @@ -1,3 +1,4 @@ +UseColor: true Checks: # COMMON: Usually, we keep all checks enabled - "bugprone-*" @@ -21,6 +22,9 @@ Checks: - -cppcoreguidelines-avoid-magic-numbers - -cppcoreguidelines-macro-usage - -bugprone-easily-swappable-parameters +- -portability-avoid-pragma-once # Vulkan requires the use of reinterpret/const casts in many places - -cppcoreguidelines-pro-type-reinterpret-cast - -cppcoreguidelines-pro-type-const-cast +# We use namespace forward declarations +- -bugprone-forward-declaration-namespace diff --git a/lsfg-vk-backend/src/extraction/dll_reader.cpp b/lsfg-vk-backend/src/extraction/dll_reader.cpp index 13e09e5..13fcd07 100644 --- a/lsfg-vk-backend/src/extraction/dll_reader.cpp +++ b/lsfg-vk-backend/src/extraction/dll_reader.cpp @@ -20,59 +20,61 @@ using namespace lsfgvk; using namespace lsfgvk::backend; -/// DOS file header -struct DOSHeader { - uint16_t magic; // 0x5A4D - std::array pad; - int32_t pe_offset; // file offset -}; +namespace { + /// DOS file header + struct DOSHeader { + uint16_t magic; // 0x5A4D + std::array pad; + int32_t pe_offset; // file offset + }; -/// PE header -struct PEHeader { - uint32_t signature; // "PE\0\0" - std::array pad1; - uint16_t sect_count; - std::array pad2; - uint16_t opt_hdr_size; - std::array pad3; -}; + /// PE header + struct PEHeader { + uint32_t signature; // "PE\0\0" + std::array pad1; + uint16_t sect_count; + std::array pad2; + uint16_t opt_hdr_size; + std::array pad3; + }; -/// (partial!) PE optional header -struct PEOptionalHeader { - uint16_t magic; // 0x20B - std::array pad4; - std::pair resource_table; // file offset/size -}; + /// (partial!) PE optional header + struct PEOptionalHeader { + uint16_t magic; // 0x20B + std::array pad4; + std::pair resource_table; // file offset/size + }; -/// Section header -struct SectionHeader { - std::array pad1; - uint32_t vsize; // virtual - uint32_t vaddress; - uint32_t fsize; // raw - uint32_t foffset; - std::array pad2; -}; + /// Section header + struct SectionHeader { + std::array pad1; + uint32_t vsize; // virtual + uint32_t vaddress; + uint32_t fsize; // raw + uint32_t foffset; + std::array pad2; + }; -/// Resource directory -struct ResourceDirectory { - std::array pad; - uint16_t name_count; - uint16_t id_count; -}; + /// Resource directory + struct ResourceDirectory { + std::array pad; + uint16_t name_count; + uint16_t id_count; + }; -/// Resource directory entry -struct ResourceDirectoryEntry { - uint32_t id; - uint32_t offset; // high bit = directory -}; + /// Resource directory entry + struct ResourceDirectoryEntry { + uint32_t id; + uint32_t offset; // high bit = directory + }; -/// Resource data entry -struct ResourceDataEntry { - uint32_t offset; - uint32_t size; - std::array pad; -}; + /// Resource data entry + struct ResourceDataEntry { + uint32_t offset; + uint32_t size; + std::array pad; + }; +} #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunknown-warning-option" diff --git a/lsfg-vk-backend/src/extraction/shader_registry.cpp b/lsfg-vk-backend/src/extraction/shader_registry.cpp index 844aa84..b9c65e6 100644 --- a/lsfg-vk-backend/src/extraction/shader_registry.cpp +++ b/lsfg-vk-backend/src/extraction/shader_registry.cpp @@ -51,22 +51,23 @@ namespace { const uint32_t SpvImageFormatRgba8 = 4; for (size_t i = 5; i < words.size();) { - const uint32_t& word = words[i]; + const uint32_t& word = words[i]; // NOLINT ([]-usage) const uint16_t wc = (word >> 16); const uint16_t op = word & 0xFFFF; // remove write without format capability if (op == SpvOpCapability && wc >= 2) { - uint32_t& cap = words[i + 1]; + uint32_t& cap = words[i + 1]; // NOLINT ([]-usage) if (cap == SpvCapabilityStorageImageWriteWithoutFormat) cap = SpvCapabilityShader; } // patch format in image instructions if (op == SpvOpTypeImage && wc >= 9) { - const uint32_t sampled = words[i + 7]; + const uint32_t sampled = words[i + 7]; // NOLINT ([]-usage) if (sampled == 2) - words[i + 8] = hdr ? SpvImageFormatRgba16f : SpvImageFormatRgba8; + words[i + 8] = // NOLINT ([]-usage) + hdr ? SpvImageFormatRgba16f : SpvImageFormatRgba8; } i += wc ? wc : 1; diff --git a/lsfg-vk-backend/src/helpers/managed_shader.cpp b/lsfg-vk-backend/src/helpers/managed_shader.cpp index df63450..0b35ad4 100644 --- a/lsfg-vk-backend/src/helpers/managed_shader.cpp +++ b/lsfg-vk-backend/src/helpers/managed_shader.cpp @@ -31,7 +31,7 @@ ManagedShaderBuilder& ManagedShaderBuilder::sampleds( count = images.size() - offset; for (size_t i = 0; i < count; ++i) - this->sampledImages.push_back(std::ref(images[offset + i])); + this->sampledImages.push_back(std::ref(images.at(offset + i))); return *this; } @@ -48,7 +48,7 @@ ManagedShaderBuilder& ManagedShaderBuilder::storages( count = images.size() - offset; for (size_t i = 0; i < count; ++i) - this->storageImages.push_back(std::ref(images[offset + i])); + this->storageImages.push_back(std::ref(images.at(offset + i))); return *this; } diff --git a/lsfg-vk-backend/src/lsfgvk.cpp b/lsfg-vk-backend/src/lsfgvk.cpp index 125704c..c94cfe1 100644 --- a/lsfg-vk-backend/src/lsfgvk.cpp +++ b/lsfg-vk-backend/src/lsfgvk.cpp @@ -168,7 +168,7 @@ Instance::Instance( funcs.GetPhysicalDeviceProperties2(device, &props); std::array devname = std::to_array(props.properties.deviceName); - devname[255] = '\0'; // ensure null-termination + devname.at(255) = '\0'; // ensure null-termination if (devicePicker( std::string(devname.data()), @@ -549,7 +549,7 @@ ContextImpl::ContextImpl(const InstanceImpl& instance, cmdbuf.submit(ctx.vk); // wait for completion } -void Instance::scheduleFrames(Context& context) { +void Instance::scheduleFrames(Context& context) { // NOLINT (static) #ifdef LSFGVK_TESTING_RENDERDOC const auto& impl = this->m_impl; if (impl->getRenderDocAPI()) { diff --git a/lsfg-vk-backend/src/shaderchains/alpha0.cpp b/lsfg-vk-backend/src/shaderchains/alpha0.cpp index 4344756..c8229c2 100644 --- a/lsfg-vk-backend/src/shaderchains/alpha0.cpp +++ b/lsfg-vk-backend/src/shaderchains/alpha0.cpp @@ -67,7 +67,7 @@ void Alpha0::prepare(std::vector& images) const { } void Alpha0::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd) const { - this->sets[0].dispatch(vk, cmd, this->dispatchExtent0); - this->sets[1].dispatch(vk, cmd, this->dispatchExtent0); - this->sets[2].dispatch(vk, cmd, this->dispatchExtent1); + this->sets.at(0).dispatch(vk, cmd, this->dispatchExtent0); + this->sets.at(1).dispatch(vk, cmd, this->dispatchExtent0); + this->sets.at(2).dispatch(vk, cmd, this->dispatchExtent1); } diff --git a/lsfg-vk-backend/src/shaderchains/alpha1.cpp b/lsfg-vk-backend/src/shaderchains/alpha1.cpp index 2bac935..34bebf0 100644 --- a/lsfg-vk-backend/src/shaderchains/alpha1.cpp +++ b/lsfg-vk-backend/src/shaderchains/alpha1.cpp @@ -50,5 +50,5 @@ void Alpha1::prepare(std::vector& images) const { } void Alpha1::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets[idx % this->sets.size()].dispatch(vk, cmd, dispatchExtent); + this->sets.at(idx % this->sets.size()).dispatch(vk, cmd, dispatchExtent); } diff --git a/lsfg-vk-backend/src/shaderchains/beta0.cpp b/lsfg-vk-backend/src/shaderchains/beta0.cpp index c00283d..300cef2 100644 --- a/lsfg-vk-backend/src/shaderchains/beta0.cpp +++ b/lsfg-vk-backend/src/shaderchains/beta0.cpp @@ -46,5 +46,5 @@ void Beta0::prepare(std::vector& images) const { } void Beta0::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets[idx % this->sets.size()].dispatch(vk, cmd, dispatchExtent); + this->sets.at(idx % this->sets.size()).dispatch(vk, cmd, dispatchExtent); } diff --git a/lsfg-vk-backend/src/shaderchains/beta1.cpp b/lsfg-vk-backend/src/shaderchains/beta1.cpp index f55dc76..2499656 100644 --- a/lsfg-vk-backend/src/shaderchains/beta1.cpp +++ b/lsfg-vk-backend/src/shaderchains/beta1.cpp @@ -74,8 +74,8 @@ void Beta1::prepare(std::vector& images) const { } void Beta1::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd) const { - this->sets[0].dispatch(vk, cmd, this->dispatchExtent0); - this->sets[1].dispatch(vk, cmd, this->dispatchExtent0); - this->sets[2].dispatch(vk, cmd, this->dispatchExtent0); - this->sets[3].dispatch(vk, cmd, this->dispatchExtent1); + this->sets.at(0).dispatch(vk, cmd, this->dispatchExtent0); + this->sets.at(1).dispatch(vk, cmd, this->dispatchExtent0); + this->sets.at(2).dispatch(vk, cmd, this->dispatchExtent0); + this->sets.at(3).dispatch(vk, cmd, this->dispatchExtent1); } diff --git a/lsfg-vk-backend/src/shaderchains/delta0.cpp b/lsfg-vk-backend/src/shaderchains/delta0.cpp index 00c7d54..8a5c34b 100644 --- a/lsfg-vk-backend/src/shaderchains/delta0.cpp +++ b/lsfg-vk-backend/src/shaderchains/delta0.cpp @@ -70,6 +70,6 @@ void Delta0::prepare(std::vector& images) const { } void Delta0::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets0[idx % this->sets0.size()].dispatch(vk, cmd, dispatchExtent); - this->sets1[idx % this->sets1.size()].dispatch(vk, cmd, dispatchExtent); + this->sets0.at(idx % this->sets0.size()).dispatch(vk, cmd, dispatchExtent); + this->sets1.at(idx % this->sets1.size()).dispatch(vk, cmd, dispatchExtent); } diff --git a/lsfg-vk-backend/src/shaderchains/gamma0.cpp b/lsfg-vk-backend/src/shaderchains/gamma0.cpp index b8dc23a..df10fb8 100644 --- a/lsfg-vk-backend/src/shaderchains/gamma0.cpp +++ b/lsfg-vk-backend/src/shaderchains/gamma0.cpp @@ -49,5 +49,5 @@ void Gamma0::prepare(std::vector& images) const { } void Gamma0::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets[idx % this->sets.size()].dispatch(vk, cmd, dispatchExtent); + this->sets.at(idx % this->sets.size()).dispatch(vk, cmd, dispatchExtent); } diff --git a/lsfg-vk-backend/src/shaderchains/generate.cpp b/lsfg-vk-backend/src/shaderchains/generate.cpp index 45a27e4..2375ccf 100644 --- a/lsfg-vk-backend/src/shaderchains/generate.cpp +++ b/lsfg-vk-backend/src/shaderchains/generate.cpp @@ -53,5 +53,5 @@ Generate::Generate(const Ctx& ctx, size_t idx, } void Generate::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets[idx % 2].dispatch(vk, cmd, this->dispatchExtent); + this->sets.at(idx % 2).dispatch(vk, cmd, this->dispatchExtent); } diff --git a/lsfg-vk-backend/src/shaderchains/mipmaps.cpp b/lsfg-vk-backend/src/shaderchains/mipmaps.cpp index a6f4db9..2f04669 100644 --- a/lsfg-vk-backend/src/shaderchains/mipmaps.cpp +++ b/lsfg-vk-backend/src/shaderchains/mipmaps.cpp @@ -49,5 +49,5 @@ void Mipmaps::prepare(std::vector& images) const { } void Mipmaps::render(const vk::Vulkan& vk, const vk::CommandBuffer& cmd, size_t idx) const { - this->sets[idx % 2].dispatch(vk, cmd, this->dispatchExtent); + this->sets.at(idx % 2).dispatch(vk, cmd, this->dispatchExtent); } diff --git a/lsfg-vk-cli/.clang-tidy b/lsfg-vk-cli/.clang-tidy index b89842d..690d60f 100644 --- a/lsfg-vk-cli/.clang-tidy +++ b/lsfg-vk-cli/.clang-tidy @@ -1,3 +1,4 @@ +UseColor: true Checks: # COMMON: Usually, we keep all checks enabled - "bugprone-*" @@ -21,5 +22,6 @@ Checks: - -cppcoreguidelines-avoid-magic-numbers - -cppcoreguidelines-macro-usage - -bugprone-easily-swappable-parameters +- -portability-avoid-pragma-once # Pointer arithmetic is used plenty for parsing cli arguments - -cppcoreguidelines-pro-bounds-pointer-arithmetic diff --git a/lsfg-vk-cli/src/tools/benchmark.cpp b/lsfg-vk-cli/src/tools/benchmark.cpp index 3738a20..eb18aa3 100644 --- a/lsfg-vk-cli/src/tools/benchmark.cpp +++ b/lsfg-vk-cli/src/tools/benchmark.cpp @@ -72,7 +72,7 @@ int benchmark::run(const Options& opts) { auto& properties = props.properties; std::array devname = std::to_array(properties.deviceName); - devname[255] = '\0'; // ensure null-termination + devname.at(255) = '\0'; // ensure null-termination if (std::string(devname.data()) == *opts.gpu) return device; diff --git a/lsfg-vk-cli/src/tools/debug.cpp b/lsfg-vk-cli/src/tools/debug.cpp index 2fdd884..3b21449 100644 --- a/lsfg-vk-cli/src/tools/debug.cpp +++ b/lsfg-vk-cli/src/tools/debug.cpp @@ -112,7 +112,7 @@ int debug::run(const Options& opts) { auto& properties = props.properties; std::array devname = std::to_array(properties.deviceName); - devname[255] = '\0'; // ensure null-termination + devname.at(255) = '\0'; // ensure null-termination if (std::string(devname.data()) == *opts.gpu) return device; diff --git a/lsfg-vk-common/.clang-tidy b/lsfg-vk-common/.clang-tidy index a659a27..4e7462b 100644 --- a/lsfg-vk-common/.clang-tidy +++ b/lsfg-vk-common/.clang-tidy @@ -1,3 +1,4 @@ +UseColor: true Checks: # COMMON: Usually, we keep all checks enabled - "bugprone-*" @@ -21,6 +22,9 @@ Checks: - -cppcoreguidelines-avoid-magic-numbers - -cppcoreguidelines-macro-usage - -bugprone-easily-swappable-parameters +- -portability-avoid-pragma-once # Vulkan requires the use of reinterpret/const casts in many places - -cppcoreguidelines-pro-type-reinterpret-cast - -cppcoreguidelines-pro-type-const-cast +CheckOptions: + cppcoreguidelines-pro-bounds-avoid-unchecked-container-access.ExcludeClasses: '::std::map;::std::unordered_map;::std::flat_map;::toml::table' diff --git a/lsfg-vk-common/include/lsfg-vk-common/configuration/config.hpp b/lsfg-vk-common/include/lsfg-vk-common/configuration/config.hpp index 89772f3..4581c3e 100644 --- a/lsfg-vk-common/include/lsfg-vk-common/configuration/config.hpp +++ b/lsfg-vk-common/include/lsfg-vk-common/configuration/config.hpp @@ -3,6 +3,7 @@ #pragma once #include +#include #include #include #include @@ -15,11 +16,11 @@ namespace ls { /// optional dll override std::optional dll; /// should fp16 be allowed - bool allow_fp16; + bool allow_fp16{}; }; /// pacing methods - enum class Pacing { + enum class Pacing : uint8_t { /// do not perform any pacing (vsync+novrr) None }; diff --git a/lsfg-vk-common/include/lsfg-vk-common/configuration/detection.hpp b/lsfg-vk-common/include/lsfg-vk-common/configuration/detection.hpp index 9f6eafa..95735e8 100644 --- a/lsfg-vk-common/include/lsfg-vk-common/configuration/detection.hpp +++ b/lsfg-vk-common/include/lsfg-vk-common/configuration/detection.hpp @@ -4,6 +4,7 @@ #include "config.hpp" +#include #include #include #include @@ -23,7 +24,7 @@ namespace ls { }; /// enum describing which identification method was used - enum class IdentType { + enum class IdentType : uint8_t { OVERRIDE, // identified by override EXECUTABLE, // identified by executable path WINE_EXECUTABLE, // identified by wine executable path diff --git a/lsfg-vk-common/include/lsfg-vk-common/helpers/pointers.hpp b/lsfg-vk-common/include/lsfg-vk-common/helpers/pointers.hpp index afa703f..c202f43 100644 --- a/lsfg-vk-common/include/lsfg-vk-common/helpers/pointers.hpp +++ b/lsfg-vk-common/include/lsfg-vk-common/helpers/pointers.hpp @@ -85,7 +85,7 @@ namespace ls { : ptr(ptr), deleter(std::move(deleter)) {} /// get reference to owned object - T& get() const { + [[nodiscard]] T& get() const { assert(ptr != nullptr && "owned_ptr: no object owned"); return *ptr; } diff --git a/lsfg-vk-common/src/vulkan/vulkan.cpp b/lsfg-vk-common/src/vulkan/vulkan.cpp index b6a2c7a..092b874 100644 --- a/lsfg-vk-common/src/vulkan/vulkan.cpp +++ b/lsfg-vk-common/src/vulkan/vulkan.cpp @@ -129,7 +129,7 @@ namespace { fi.GetPhysicalDeviceQueueFamilyProperties(physdev, &queueCount, queues.data()); for (uint32_t i = 0; i < queueCount; ++i) { - if ((queues[i].queueFlags & flags) == flags) + if ((queues.at(i).queueFlags & flags) == flags) return i; } diff --git a/lsfg-vk-layer/.clang-tidy b/lsfg-vk-layer/.clang-tidy index 0939c9a..b2348d2 100644 --- a/lsfg-vk-layer/.clang-tidy +++ b/lsfg-vk-layer/.clang-tidy @@ -1,3 +1,4 @@ +UseColor: true Checks: # COMMON: Usually, we keep all checks enabled - "bugprone-*" @@ -21,6 +22,7 @@ Checks: - -cppcoreguidelines-avoid-magic-numbers - -cppcoreguidelines-macro-usage - -bugprone-easily-swappable-parameters +- -portability-avoid-pragma-once # Vulkan requires the use of reinterpret/const casts in many places - -cppcoreguidelines-pro-type-reinterpret-cast - -cppcoreguidelines-pro-type-const-cast diff --git a/lsfg-vk-layer/src/instance.cpp b/lsfg-vk-layer/src/instance.cpp index 8708638..00da4d1 100644 --- a/lsfg-vk-layer/src/instance.cpp +++ b/lsfg-vk-layer/src/instance.cpp @@ -153,7 +153,7 @@ void Root::modifySwapchainCreateInfo(const vk::Vulkan& vk, VkSwapchainCreateInfo if (!this->active_profile.has_value()) return; - VkSurfaceCapabilitiesKHR caps{}; + VkSurfaceCapabilitiesKHR caps{}; // NOLINT (enum value 0) auto res = vk.fi().GetPhysicalDeviceSurfaceCapabilitiesKHR( vk.physdev(), createInfo.surface, &caps); if (res != VK_SUCCESS) diff --git a/lsfg-vk-ui/.clang-tidy b/lsfg-vk-ui/.clang-tidy index 8d8a825..042dd46 100644 --- a/lsfg-vk-ui/.clang-tidy +++ b/lsfg-vk-ui/.clang-tidy @@ -1,3 +1,4 @@ +UseColor: true Checks: # COMMON: Usually, we keep all checks enabled - "bugprone-*" @@ -21,5 +22,6 @@ Checks: - -cppcoreguidelines-avoid-magic-numbers - -cppcoreguidelines-macro-usage - -bugprone-easily-swappable-parameters +- -portability-avoid-pragma-once # Qt requires use of raw pointers in many places - -cppcoreguidelines-owning-memory diff --git a/lsfg-vk-ui/src/backend.hpp b/lsfg-vk-ui/src/backend.hpp index ed39e14..9eed642 100644 --- a/lsfg-vk-ui/src/backend.hpp +++ b/lsfg-vk-ui/src/backend.hpp @@ -56,7 +56,7 @@ namespace lsfgvk::ui { #define VALIDATE_AND_GET_PROFILE(default) \ if (!isValidProfileIndex()) return default; \ - auto& conf = this->m_profiles[static_cast(this->m_profile_index)]; + auto& conf = this->m_profiles.at(static_cast(this->m_profile_index)); [[nodiscard]] bool isValidProfileIndex() const { return this->m_profile_index >= 0 && std::cmp_less(this->m_profile_index, this->m_profiles.size()); @@ -131,7 +131,7 @@ namespace lsfgvk::ui { #define VALIDATE_AND_GET_PROFILE() \ if (!isValidProfileIndex()) return; \ - auto& conf = this->m_profiles[static_cast(this->m_profile_index)]; + auto& conf = this->m_profiles.at(static_cast(this->m_profile_index)); void multiplierUpdated(size_t multiplier) { VALIDATE_AND_GET_PROFILE()