From 0748ce610ff0e288f62dec2a1796cc030633b82d Mon Sep 17 00:00:00 2001 From: Herman Semenov Date: Fri, 15 Dec 2023 14:08:22 +0300 Subject: [PATCH] [GPU/Common/D3D11/Directx9/GLES/Vulkan] Using reserve if possible --- GPU/Common/DrawEngineCommon.cpp | 1 + GPU/Common/FragmentShaderGenerator.cpp | 1 + GPU/Common/GeometryShaderGenerator.cpp | 2 ++ GPU/Common/VertexShaderGenerator.cpp | 1 + GPU/D3D11/ShaderManagerD3D11.cpp | 2 ++ GPU/Directx9/ShaderManagerDX9.cpp | 2 ++ GPU/GLES/DrawEngineGLES.cpp | 1 + GPU/GLES/ShaderManagerGLES.cpp | 2 ++ GPU/Vulkan/PipelineManagerVulkan.cpp | 1 + GPU/Vulkan/ShaderManagerVulkan.cpp | 3 +++ GPU/Vulkan/TextureCacheVulkan.cpp | 1 + 11 files changed, 17 insertions(+) diff --git a/GPU/Common/DrawEngineCommon.cpp b/GPU/Common/DrawEngineCommon.cpp index 190f6160d4..5decf89806 100644 --- a/GPU/Common/DrawEngineCommon.cpp +++ b/GPU/Common/DrawEngineCommon.cpp @@ -75,6 +75,7 @@ VertexDecoder *DrawEngineCommon::GetVertexDecoder(u32 vtype) { std::vector DrawEngineCommon::DebugGetVertexLoaderIDs() { std::vector ids; + ids.reserve(decoderMap_.size()); decoderMap_.Iterate([&](const uint32_t vtype, VertexDecoder *decoder) { std::string id; id.resize(sizeof(vtype)); diff --git a/GPU/Common/FragmentShaderGenerator.cpp b/GPU/Common/FragmentShaderGenerator.cpp index 1bbdd19ace..67e73febf3 100644 --- a/GPU/Common/FragmentShaderGenerator.cpp +++ b/GPU/Common/FragmentShaderGenerator.cpp @@ -72,6 +72,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu std::vector extensions; if (ShaderLanguageIsOpenGL(compat.shaderLanguage)) { + extensions.reserve(4); if (stencilToAlpha == REPLACE_ALPHA_DUALSOURCE && gl_extensions.EXT_blend_func_extended) { extensions.push_back("#extension GL_EXT_blend_func_extended : require"); } diff --git a/GPU/Common/GeometryShaderGenerator.cpp b/GPU/Common/GeometryShaderGenerator.cpp index d09775cf76..06229fc25d 100644 --- a/GPU/Common/GeometryShaderGenerator.cpp +++ b/GPU/Common/GeometryShaderGenerator.cpp @@ -67,6 +67,8 @@ bool GenerateGeometryShader(const GShaderID &id, char *buffer, const ShaderLangu } std::vector varyings, outVaryings; + varyings.reserve(4); + outVaryings.reserve(4); if (id.Bit(GS_BIT_DO_TEXTURE)) { varyings.push_back(VaryingDef{ "vec3", "v_texcoord", Draw::SEM_TEXCOORD0, 0, "highp" }); diff --git a/GPU/Common/VertexShaderGenerator.cpp b/GPU/Common/VertexShaderGenerator.cpp index 9d724e87e3..c85249216b 100644 --- a/GPU/Common/VertexShaderGenerator.cpp +++ b/GPU/Common/VertexShaderGenerator.cpp @@ -136,6 +136,7 @@ bool GenerateVertexShader(const VShaderID &id, char *buffer, const ShaderLanguag bool highpTexcoord = false; std::vector extensions; + extensions.reserve(6); if (ShaderLanguageIsOpenGL(compat.shaderLanguage)) { if (gl_extensions.EXT_gpu_shader4) { extensions.push_back("#extension GL_EXT_gpu_shader4 : enable"); diff --git a/GPU/D3D11/ShaderManagerD3D11.cpp b/GPU/D3D11/ShaderManagerD3D11.cpp index b6681aa8b4..462f65a92c 100644 --- a/GPU/D3D11/ShaderManagerD3D11.cpp +++ b/GPU/D3D11/ShaderManagerD3D11.cpp @@ -251,6 +251,7 @@ std::vector ShaderManagerD3D11::DebugGetShaderIDs(DebugShaderType t switch (type) { case SHADER_TYPE_VERTEX: { + ids.reserve(vsCache_.size()); for (auto iter : vsCache_) { iter.first.ToString(&id); ids.push_back(id); @@ -259,6 +260,7 @@ std::vector ShaderManagerD3D11::DebugGetShaderIDs(DebugShaderType t } case SHADER_TYPE_FRAGMENT: { + ids.reserve(fsCache_.size()); for (auto iter : fsCache_) { iter.first.ToString(&id); ids.push_back(id); diff --git a/GPU/Directx9/ShaderManagerDX9.cpp b/GPU/Directx9/ShaderManagerDX9.cpp index 8d5f4fb9c1..b40b8e9457 100644 --- a/GPU/Directx9/ShaderManagerDX9.cpp +++ b/GPU/Directx9/ShaderManagerDX9.cpp @@ -667,6 +667,7 @@ std::vector ShaderManagerDX9::DebugGetShaderIDs(DebugShaderType typ switch (type) { case SHADER_TYPE_VERTEX: { + ids.reserve(vsCache_.size()); for (auto iter : vsCache_) { iter.first.ToString(&id); ids.push_back(id); @@ -675,6 +676,7 @@ std::vector ShaderManagerDX9::DebugGetShaderIDs(DebugShaderType typ break; case SHADER_TYPE_FRAGMENT: { + ids.reserve(fsCache_.size()); for (auto iter : fsCache_) { iter.first.ToString(&id); ids.push_back(id); diff --git a/GPU/GLES/DrawEngineGLES.cpp b/GPU/GLES/DrawEngineGLES.cpp index 26c01dcd07..9ba25ada16 100644 --- a/GPU/GLES/DrawEngineGLES.cpp +++ b/GPU/GLES/DrawEngineGLES.cpp @@ -103,6 +103,7 @@ void DrawEngineGLES::InitDeviceObjects() { int stride = sizeof(TransformedVertex); std::vector entries; + entries.reserve(5); entries.push_back({ ATTR_POSITION, 4, GL_FLOAT, GL_FALSE, offsetof(TransformedVertex, x) }); entries.push_back({ ATTR_TEXCOORD, 3, GL_FLOAT, GL_FALSE, offsetof(TransformedVertex, u) }); entries.push_back({ ATTR_COLOR0, 4, GL_UNSIGNED_BYTE, GL_TRUE, offsetof(TransformedVertex, color0) }); diff --git a/GPU/GLES/ShaderManagerGLES.cpp b/GPU/GLES/ShaderManagerGLES.cpp index 6f69d80c6d..10b25a3ebb 100644 --- a/GPU/GLES/ShaderManagerGLES.cpp +++ b/GPU/GLES/ShaderManagerGLES.cpp @@ -915,6 +915,7 @@ std::vector ShaderManagerGLES::DebugGetShaderIDs(DebugShaderType ty switch (type) { case SHADER_TYPE_VERTEX: { + ids.reserve(vsCache_.size()); vsCache_.Iterate([&](const VShaderID &id, Shader *shader) { std::string idstr; id.ToString(&idstr); @@ -924,6 +925,7 @@ std::vector ShaderManagerGLES::DebugGetShaderIDs(DebugShaderType ty break; case SHADER_TYPE_FRAGMENT: { + ids.reserve(fsCache_.size()); fsCache_.Iterate([&](const FShaderID &id, Shader *shader) { std::string idstr; id.ToString(&idstr); diff --git a/GPU/Vulkan/PipelineManagerVulkan.cpp b/GPU/Vulkan/PipelineManagerVulkan.cpp index 20d76a1a5f..86f6e51f1a 100644 --- a/GPU/Vulkan/PipelineManagerVulkan.cpp +++ b/GPU/Vulkan/PipelineManagerVulkan.cpp @@ -402,6 +402,7 @@ std::vector PipelineManagerVulkan::DebugGetObjectIDs(DebugShaderTyp switch (type) { case SHADER_TYPE_PIPELINE: { + ids.reserve(pipelines_.size()); pipelines_.Iterate([&](const VulkanPipelineKey &key, VulkanPipeline *value) { std::string id; key.ToString(&id); diff --git a/GPU/Vulkan/ShaderManagerVulkan.cpp b/GPU/Vulkan/ShaderManagerVulkan.cpp index debf889f5c..93777b5ed9 100644 --- a/GPU/Vulkan/ShaderManagerVulkan.cpp +++ b/GPU/Vulkan/ShaderManagerVulkan.cpp @@ -394,6 +394,7 @@ std::vector ShaderManagerVulkan::DebugGetShaderIDs(DebugShaderType switch (type) { case SHADER_TYPE_VERTEX: { + ids.reserve(vsCache_.size()); vsCache_.Iterate([&](const VShaderID &id, VulkanVertexShader *shader) { std::string idstr; id.ToString(&idstr); @@ -403,6 +404,7 @@ std::vector ShaderManagerVulkan::DebugGetShaderIDs(DebugShaderType } case SHADER_TYPE_FRAGMENT: { + ids.reserve(fsCache_.size()); fsCache_.Iterate([&](const FShaderID &id, VulkanFragmentShader *shader) { std::string idstr; id.ToString(&idstr); @@ -412,6 +414,7 @@ std::vector ShaderManagerVulkan::DebugGetShaderIDs(DebugShaderType } case SHADER_TYPE_GEOMETRY: { + ids.reserve(gsCache_.size()); gsCache_.Iterate([&](const GShaderID &id, VulkanGeometryShader *shader) { std::string idstr; id.ToString(&idstr); diff --git a/GPU/Vulkan/TextureCacheVulkan.cpp b/GPU/Vulkan/TextureCacheVulkan.cpp index f6550eb3f0..05217599e9 100644 --- a/GPU/Vulkan/TextureCacheVulkan.cpp +++ b/GPU/Vulkan/TextureCacheVulkan.cpp @@ -187,6 +187,7 @@ void SamplerCache::DeviceRestore(VulkanContext *vulkan) { std::vector SamplerCache::DebugGetSamplerIDs() const { std::vector ids; + ids.reserve(cache_.size()); cache_.Iterate([&](const SamplerCacheKey &id, VkSampler sampler) { std::string idstr; id.ToString(&idstr);