From 45a41183dd5a31573df2649a1d7a4927e587e616 Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Sat, 8 Mar 2025 17:30:12 +0200 Subject: [PATCH 1/2] [d3d11] Fix a few static analysis nits --- src/d3d11/d3d11_cuda.h | 20 ++++++++++---------- src/d3d11/d3d11_device.cpp | 2 +- src/d3d11/d3d11_device.h | 2 +- src/d3d11/d3d11_fence.cpp | 4 ++-- src/dxbc/dxbc_compiler.cpp | 3 ++- src/dxbc/dxbc_decoder.h | 2 +- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/d3d11/d3d11_cuda.h b/src/d3d11/d3d11_cuda.h index 8e0c35c73..59c5b7514 100644 --- a/src/d3d11/d3d11_cuda.h +++ b/src/d3d11/d3d11_cuda.h @@ -49,14 +49,14 @@ namespace dxvk { CubinShaderLaunchInfo() = default; - CubinShaderLaunchInfo(CubinShaderLaunchInfo&& other) { - shader = std::move(other.shader); - params = std::move(other.params); - paramSize = std::move(other.paramSize); - nvxLaunchInfo = std::move(other.nvxLaunchInfo); - cuLaunchConfig = other.cuLaunchConfig; - buffers = std::move(other.buffers); - images = std::move(other.images); + CubinShaderLaunchInfo(CubinShaderLaunchInfo&& other) + : shader ( std::move(other.shader) ) + , params ( std::move(other.params) ) + , paramSize ( std::move(other.paramSize) ) + , nvxLaunchInfo ( std::move(other.nvxLaunchInfo) ) + , cuLaunchConfig ( other.cuLaunchConfig ) + , buffers ( std::move(other.buffers) ) + , images ( std::move(other.images) ) { other.cuLaunchConfig[1] = nullptr; other.cuLaunchConfig[3] = nullptr; other.nvxLaunchInfo.pExtras = nullptr; @@ -68,9 +68,9 @@ namespace dxvk { Com shader; std::vector params; - size_t paramSize; + size_t paramSize = 0; VkCuLaunchInfoNVX nvxLaunchInfo = { VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX }; - std::array cuLaunchConfig; + std::array cuLaunchConfig = { }; std::vector, DxvkAccessFlags>> buffers; std::vector, DxvkAccessFlags>> images; diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index 3ba2b99e2..ec948919c 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -2012,7 +2012,7 @@ namespace dxvk { HRESULT D3D11Device::CreateShaderModule( D3D11CommonShader* pShaderModule, - DxvkShaderKey ShaderKey, + const DxvkShaderKey& ShaderKey, const void* pShaderBytecode, size_t BytecodeLength, ID3D11ClassLinkage* pClassLinkage, diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h index 66baa6add..f55da518d 100644 --- a/src/d3d11/d3d11_device.h +++ b/src/d3d11/d3d11_device.h @@ -521,7 +521,7 @@ namespace dxvk { HRESULT CreateShaderModule( D3D11CommonShader* pShaderModule, - DxvkShaderKey ShaderKey, + const DxvkShaderKey& ShaderKey, const void* pShaderBytecode, size_t BytecodeLength, ID3D11ClassLinkage* pClassLinkage, diff --git a/src/d3d11/d3d11_fence.cpp b/src/d3d11/d3d11_fence.cpp index 3eeb69467..f974b1e6c 100644 --- a/src/d3d11/d3d11_fence.cpp +++ b/src/d3d11/d3d11_fence.cpp @@ -9,10 +9,10 @@ namespace dxvk { UINT64 InitialValue, D3D11_FENCE_FLAG Flags, HANDLE hFence) - : D3D11DeviceChild(pDevice) { + : D3D11DeviceChild ( pDevice ) + , m_flags ( Flags ) { DxvkFenceCreateInfo fenceInfo; fenceInfo.initialValue = InitialValue; - m_flags = Flags; if (Flags & D3D11_FENCE_FLAG_SHARED) { fenceInfo.sharedType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT; diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index 2bcb0a31f..2862c7343 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -5184,7 +5184,8 @@ namespace dxvk { if (modifiers.saturate) { DxbcRegMask mask; - DxbcRegisterValue vec0, vec1; + DxbcRegisterValue vec0 = { }; + DxbcRegisterValue vec1 = { }; if (value.type.ctype == DxbcScalarType::Float32) { mask = DxbcRegMask::firstN(value.type.ccount); diff --git a/src/dxbc/dxbc_decoder.h b/src/dxbc/dxbc_decoder.h index 771837152..f9c2fe116 100644 --- a/src/dxbc/dxbc_decoder.h +++ b/src/dxbc/dxbc_decoder.h @@ -480,7 +480,7 @@ namespace dxvk { private: - DxbcShaderInstruction m_instruction; + DxbcShaderInstruction m_instruction = { }; std::array m_dstOperands; std::array m_srcOperands; From 6ce33187f952625423939c2a99abcda0fab1a8a8 Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Sat, 8 Mar 2025 18:38:45 +0200 Subject: [PATCH 2/2] [dxvk] Static analysis nits and fixes --- src/dxvk/dxvk_access.cpp | 4 ++-- src/dxvk/dxvk_context.h | 4 ++-- src/dxvk/dxvk_cs.h | 2 +- src/dxvk/dxvk_device_filter.cpp | 5 ++--- src/dxvk/dxvk_options.cpp | 37 ++++++++++++++++----------------- src/dxvk/dxvk_shader.cpp | 4 ++-- src/dxvk/dxvk_state_cache.cpp | 2 +- src/vulkan/vulkan_loader.cpp | 5 ++--- 8 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/dxvk/dxvk_access.cpp b/src/dxvk/dxvk_access.cpp index d900c020a..501abea4f 100644 --- a/src/dxvk/dxvk_access.cpp +++ b/src/dxvk/dxvk_access.cpp @@ -2,8 +2,8 @@ namespace dxvk { - DxvkObjectTracker::DxvkObjectTracker() { - m_head = std::make_unique(); + DxvkObjectTracker::DxvkObjectTracker() + : m_head ( std::make_unique() ) { m_next = m_head.get(); } diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index 86fe31bdc..c4bb8593e 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -1659,8 +1659,8 @@ namespace dxvk { void uploadImageHw( const Rc& image, const Rc& source, - VkDeviceSize subresourceAlignment, - VkDeviceSize sourceOffset); + VkDeviceSize sourceOffset, + VkDeviceSize subresourceAlignment); void performClear( const Rc& imageView, diff --git a/src/dxvk/dxvk_cs.h b/src/dxvk/dxvk_cs.h index df684db81..9c235e3a9 100644 --- a/src/dxvk/dxvk_cs.h +++ b/src/dxvk/dxvk_cs.h @@ -318,7 +318,7 @@ namespace dxvk { DxvkCsChunkFlags m_flags; alignas(64) - char m_data[DxvkCsChunkSize]; + char m_data[DxvkCsChunkSize] = { }; template void* alloc(size_t extra) { diff --git a/src/dxvk/dxvk_device_filter.cpp b/src/dxvk/dxvk_device_filter.cpp index df9c09694..b14a32bf8 100644 --- a/src/dxvk/dxvk_device_filter.cpp +++ b/src/dxvk/dxvk_device_filter.cpp @@ -5,9 +5,8 @@ namespace dxvk { DxvkDeviceFilter::DxvkDeviceFilter( DxvkDeviceFilterFlags flags, const DxvkOptions& options) - : m_flags(flags) { - m_matchDeviceName = env::getEnvVar("DXVK_FILTER_DEVICE_NAME"); - + : m_flags(flags) + , m_matchDeviceName ( env::getEnvVar("DXVK_FILTER_DEVICE_NAME") ) { if (m_matchDeviceName.empty()) m_matchDeviceName = options.deviceFilter; diff --git a/src/dxvk/dxvk_options.cpp b/src/dxvk/dxvk_options.cpp index d2d455c33..72ee2a82b 100644 --- a/src/dxvk/dxvk_options.cpp +++ b/src/dxvk/dxvk_options.cpp @@ -2,24 +2,23 @@ namespace dxvk { - DxvkOptions::DxvkOptions(const Config& config) { - enableDebugUtils = config.getOption ("dxvk.enableDebugUtils", false); - enableStateCache = config.getOption ("dxvk.enableStateCache", true); - enableMemoryDefrag = config.getOption("dxvk.enableMemoryDefrag", Tristate::Auto); - numCompilerThreads = config.getOption ("dxvk.numCompilerThreads", 0); - enableGraphicsPipelineLibrary = config.getOption("dxvk.enableGraphicsPipelineLibrary", Tristate::Auto); - trackPipelineLifetime = config.getOption("dxvk.trackPipelineLifetime", Tristate::Auto); - useRawSsbo = config.getOption("dxvk.useRawSsbo", Tristate::Auto); - hud = config.getOption("dxvk.hud", ""); - tearFree = config.getOption("dxvk.tearFree", Tristate::Auto); - latencySleep = config.getOption("dxvk.latencySleep", Tristate::Auto); - latencyTolerance = config.getOption ("dxvk.latencyTolerance", 1000); - disableNvLowLatency2 = config.getOption("dxvk.disableNvLowLatency2", Tristate::Auto); - hideIntegratedGraphics = config.getOption ("dxvk.hideIntegratedGraphics", false); - zeroMappedMemory = config.getOption ("dxvk.zeroMappedMemory", false); - allowFse = config.getOption ("dxvk.allowFse", false); - deviceFilter = config.getOption("dxvk.deviceFilter", ""); - tilerMode = config.getOption("dxvk.tilerMode", Tristate::Auto); - } + DxvkOptions::DxvkOptions(const Config& config) + : enableDebugUtils ( config.getOption ("dxvk.enableDebugUtils", false) ) + , enableStateCache ( config.getOption ("dxvk.enableStateCache", true) ) + , enableMemoryDefrag ( config.getOption ("dxvk.enableMemoryDefrag", Tristate::Auto) ) + , numCompilerThreads ( config.getOption ("dxvk.numCompilerThreads", 0) ) + , enableGraphicsPipelineLibrary ( config.getOption ("dxvk.enableGraphicsPipelineLibrary", Tristate::Auto) ) + , trackPipelineLifetime ( config.getOption ("dxvk.trackPipelineLifetime", Tristate::Auto) ) + , useRawSsbo ( config.getOption ("dxvk.useRawSsbo", Tristate::Auto) ) + , hud ( config.getOption("dxvk.hud", "") ) + , tearFree ( config.getOption ("dxvk.tearFree", Tristate::Auto) ) + , latencySleep ( config.getOption ("dxvk.latencySleep", Tristate::Auto) ) + , latencyTolerance ( config.getOption ("dxvk.latencyTolerance", 1000) ) + , disableNvLowLatency2 ( config.getOption ("dxvk.disableNvLowLatency2", Tristate::Auto) ) + , hideIntegratedGraphics ( config.getOption ("dxvk.hideIntegratedGraphics", false) ) + , zeroMappedMemory ( config.getOption ("dxvk.zeroMappedMemory", false) ) + , allowFse ( config.getOption ("dxvk.allowFse", false) ) + , tilerMode ( config.getOption ("dxvk.tilerMode", Tristate::Auto) ) + , deviceFilter ( config.getOption("dxvk.deviceFilter", "") ) { } } diff --git a/src/dxvk/dxvk_shader.cpp b/src/dxvk/dxvk_shader.cpp index 58d64c04b..9caed814d 100644 --- a/src/dxvk/dxvk_shader.cpp +++ b/src/dxvk/dxvk_shader.cpp @@ -793,7 +793,7 @@ namespace dxvk { // Only consider variables that have a desired location if (candidates.find(varId) != candidates.end()) { - VarInfo varInfo; + VarInfo varInfo = { }; varInfo.varId = varId; varInfo.decorationOffset = 0; @@ -1080,7 +1080,7 @@ namespace dxvk { default:; } - iter++; + ++iter; } // Insert new null variables diff --git a/src/dxvk/dxvk_state_cache.cpp b/src/dxvk/dxvk_state_cache.cpp index bf669dcf2..77c729a4a 100644 --- a/src/dxvk/dxvk_state_cache.cpp +++ b/src/dxvk/dxvk_state_cache.cpp @@ -197,7 +197,7 @@ namespace dxvk { size_t m_size = 0; size_t m_read = 0; - char m_data[MaxSize]; + char m_data[MaxSize] = { }; template bool read(T& data) { diff --git a/src/vulkan/vulkan_loader.cpp b/src/vulkan/vulkan_loader.cpp index 17e9b629c..6844bd0d7 100644 --- a/src/vulkan/vulkan_loader.cpp +++ b/src/vulkan/vulkan_loader.cpp @@ -45,9 +45,8 @@ namespace dxvk::vk { std::tie(m_library, m_getInstanceProcAddr) = loadVulkanLibrary(); } - LibraryLoader::LibraryLoader(PFN_vkGetInstanceProcAddr loaderProc) { - m_getInstanceProcAddr = loaderProc; - } + LibraryLoader::LibraryLoader(PFN_vkGetInstanceProcAddr loaderProc) + : m_getInstanceProcAddr ( loaderProc ) { } LibraryLoader::~LibraryLoader() { if (m_library)