From bee2dabc777d3eae0c9f22dfa00054e2d732b74f Mon Sep 17 00:00:00 2001 From: Stenzek Date: Wed, 5 Feb 2025 22:38:46 +1000 Subject: [PATCH] Misc: Replace stringstream str() with C++20 move str() No extra heap allocation/copy. --- src/common/string_util.h | 2 +- src/core/gpu_hw_shadergen.cpp | 36 ++++++++++++------------- src/core/gpu_shadergen.cpp | 14 +++++----- src/util/input_manager.cpp | 2 +- src/util/opengl_pipeline.cpp | 2 +- src/util/postprocessing_shader_glsl.cpp | 4 +-- src/util/shadergen.cpp | 14 +++++----- 7 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/common/string_util.h b/src/common/string_util.h index 744cba9e2..2e903f046 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -202,7 +202,7 @@ inline std::string ToChars(T value) std::ostringstream ss; ss.imbue(std::locale::classic()); ss << value; - return ss.str(); + return std::move(ss).str(); #endif } diff --git a/src/core/gpu_hw_shadergen.cpp b/src/core/gpu_hw_shadergen.cpp index 7cd35a21b..5e871c0e6 100644 --- a/src/core/gpu_hw_shadergen.cpp +++ b/src/core/gpu_hw_shadergen.cpp @@ -68,7 +68,7 @@ std::string GPU_HW_ShaderGen::GenerateScreenVertexShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateBatchVertexShader(bool upscaled, bool msaa, bool per_sample_shading, @@ -193,7 +193,7 @@ std::string GPU_HW_ShaderGen::GenerateBatchVertexShader(bool upscaled, bool msaa } )"; - return ss.str(); + return std::move(ss).str(); } void GPU_HW_ShaderGen::WriteBatchTextureFilter(std::stringstream& ss, GPUTextureFilter texture_filter) const @@ -1221,7 +1221,7 @@ float4 SampleFromVRAM(TEXPAGE_VALUE texpage, float2 coords) } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMExtractFragmentShader(u32 resolution_scale, u32 multisamples, @@ -1314,7 +1314,7 @@ float3 SampleVRAM24(uint2 icoords) } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMReplacementBlitFragmentShader() const @@ -1330,7 +1330,7 @@ std::string GPU_HW_ShaderGen::GenerateVRAMReplacementBlitFragmentShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateWireframeGeometryShader() const @@ -1403,7 +1403,7 @@ void main(triangle GSInput input[3], inout LineStream output) )"; } - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateWireframeFragmentShader() const @@ -1418,7 +1418,7 @@ std::string GPU_HW_ShaderGen::GenerateWireframeFragmentShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMReadFragmentShader(u32 resolution_scale, u32 multisamples) const @@ -1483,7 +1483,7 @@ uint SampleVRAM(uint2 coords) / float4(255.0, 255.0, 255.0, 255.0); })"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMWriteFragmentShader(bool use_buffer, bool use_ssbo, bool write_mask_as_depth, @@ -1564,7 +1564,7 @@ std::string GPU_HW_ShaderGen::GenerateVRAMWriteFragmentShader(bool use_buffer, b #endif })"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMCopyFragmentShader(bool write_mask_as_depth, bool write_depth_as_rt) const @@ -1622,7 +1622,7 @@ std::string GPU_HW_ShaderGen::GenerateVRAMCopyFragmentShader(bool write_mask_as_ #endif })"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMFillFragmentShader(bool wrapped, bool interlaced, bool write_mask_as_depth, @@ -1670,7 +1670,7 @@ std::string GPU_HW_ShaderGen::GenerateVRAMFillFragmentShader(bool wrapped, bool #endif })"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateVRAMUpdateDepthFragmentShader(bool msaa) const @@ -1691,7 +1691,7 @@ std::string GPU_HW_ShaderGen::GenerateVRAMUpdateDepthFragmentShader(bool msaa) c } )"; - return ss.str(); + return std::move(ss).str(); } void GPU_HW_ShaderGen::WriteAdaptiveDownsampleUniformBuffer(std::stringstream& ss) const @@ -1715,7 +1715,7 @@ std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleVertexShader() const #endif } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleMipFragmentShader() const @@ -1749,7 +1749,7 @@ std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleMipFragmentShader() cons } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleBlurFragmentShader() const @@ -1786,7 +1786,7 @@ std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleBlurFragmentShader() con } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleCompositeFragmentShader() const @@ -1804,7 +1804,7 @@ std::string GPU_HW_ShaderGen::GenerateAdaptiveDownsampleCompositeFragmentShader( } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateBoxSampleDownsampleFragmentShader(u32 factor) const @@ -1831,7 +1831,7 @@ std::string GPU_HW_ShaderGen::GenerateBoxSampleDownsampleFragmentShader(u32 fact } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPU_HW_ShaderGen::GenerateReplacementMergeFragmentShader(bool replacement, bool semitransparent, @@ -1918,5 +1918,5 @@ std::string GPU_HW_ShaderGen::GenerateReplacementMergeFragmentShader(bool replac } )"; - return ss.str(); + return std::move(ss).str(); } \ No newline at end of file diff --git a/src/core/gpu_shadergen.cpp b/src/core/gpu_shadergen.cpp index 2d690e748..70a9b9e7c 100644 --- a/src/core/gpu_shadergen.cpp +++ b/src/core/gpu_shadergen.cpp @@ -38,7 +38,7 @@ std::string GPUShaderGen::GenerateDisplayVertexShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateDisplayFragmentShader(bool clamp_uv, bool nearest) const @@ -63,7 +63,7 @@ std::string GPUShaderGen::GenerateDisplayFragmentShader(bool clamp_uv, bool near ss << "}\n"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateDisplaySharpBilinearFragmentShader() const @@ -92,7 +92,7 @@ std::string GPUShaderGen::GenerateDisplaySharpBilinearFragmentShader() const o_col0 = float4(SAMPLE_TEXTURE(samp0, ClampUV(mod_texel * u_src_size.zw)).rgb, 1.0f); })"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateDisplayLanczosFragmentShader() const @@ -169,7 +169,7 @@ std::string GPUShaderGen::GenerateDeinterlaceWeaveFragmentShader() const o_col0 = LOAD_TEXTURE(samp0, int2(tcoord), 0); })"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateDeinterlaceBlendFragmentShader() const @@ -189,7 +189,7 @@ std::string GPUShaderGen::GenerateDeinterlaceBlendFragmentShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateFastMADReconstructFragmentShader() const @@ -248,7 +248,7 @@ CONSTANT float3 SENSITIVITY = float3(0.08f, 0.08f, 0.08f); } )"; - return ss.str(); + return std::move(ss).str(); } std::string GPUShaderGen::GenerateChromaSmoothingFragmentShader() const @@ -308,5 +308,5 @@ float3 SampleVRAMAverage2x2(uint2 icoords) } )"; - return ss.str(); + return std::move(ss).str(); } diff --git a/src/util/input_manager.cpp b/src/util/input_manager.cpp index 4ba18483d..29fbd87d1 100644 --- a/src/util/input_manager.cpp +++ b/src/util/input_manager.cpp @@ -381,7 +381,7 @@ std::string InputManager::ConvertInputBindingKeysToString(InputBindingInfo::Type ss << keystr; } - return ss.str(); + return std::move(ss).str(); } bool InputManager::PrettifyInputBinding(SmallStringBase& binding, BindingIconMappingFunction mapper /*= nullptr*/) diff --git a/src/util/opengl_pipeline.cpp b/src/util/opengl_pipeline.cpp index de0ed3523..9a9c3bcb9 100644 --- a/src/util/opengl_pipeline.cpp +++ b/src/util/opengl_pipeline.cpp @@ -453,7 +453,7 @@ GLuint OpenGLDevice::CompileProgram(const GPUPipeline::GraphicsConfig& plconfig, ss << "\n########## FRAGMENT SHADER ##########\n"; ss << fragment_shader->GetSource(); ss << "\n#####################################\n"; - DumpBadShader(ss.str(), info_log); + DumpBadShader(std::move(ss).str(), info_log); } ERROR_LOG("Program failed to link:\n{}", info_log); diff --git a/src/util/postprocessing_shader_glsl.cpp b/src/util/postprocessing_shader_glsl.cpp index 056db97f5..63025bb8b 100644 --- a/src/util/postprocessing_shader_glsl.cpp +++ b/src/util/postprocessing_shader_glsl.cpp @@ -366,7 +366,7 @@ std::string PostProcessingGLSLShaderGen::GeneratePostProcessingVertexShader(cons } )"; - return ss.str(); + return std::move(ss).str(); } std::string PostProcessingGLSLShaderGen::GeneratePostProcessingFragmentShader(const PostProcessing::GLSLShader& shader) @@ -415,7 +415,7 @@ float2 GetWindowResolution() { return u_window_size; } )"; ss << shader.GetCode(); - return ss.str(); + return std::move(ss).str(); } void PostProcessingGLSLShaderGen::WriteUniformBuffer(std::stringstream& ss, const PostProcessing::GLSLShader& shader, diff --git a/src/util/shadergen.cpp b/src/util/shadergen.cpp index 977e2a2b8..008494cfe 100644 --- a/src/util/shadergen.cpp +++ b/src/util/shadergen.cpp @@ -806,7 +806,7 @@ std::string ShaderGen::GenerateScreenQuadVertexShader(float z /* = 0.0f */) cons ss << " #endif\n"; ss << "}\n"; - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateUVQuadVertexShader() const @@ -826,7 +826,7 @@ std::string ShaderGen::GenerateUVQuadVertexShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateFillFragmentShader() const @@ -842,7 +842,7 @@ std::string ShaderGen::GenerateFillFragmentShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateFillFragmentShader(const GSVector4 fixed_color) const @@ -856,7 +856,7 @@ std::string ShaderGen::GenerateFillFragmentShader(const GSVector4 fixed_color) c << fixed_color.w << ");\n"; ss << "}\n"; - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateCopyFragmentShader(bool offset) const @@ -887,7 +887,7 @@ std::string ShaderGen::GenerateCopyFragmentShader(bool offset) const )"; } - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateImGuiVertexShader() const @@ -907,7 +907,7 @@ std::string ShaderGen::GenerateImGuiVertexShader() const } )"; - return ss.str(); + return std::move(ss).str(); } std::string ShaderGen::GenerateImGuiFragmentShader() const @@ -923,5 +923,5 @@ std::string ShaderGen::GenerateImGuiFragmentShader() const } )"; - return ss.str(); + return std::move(ss).str(); }