mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-24 00:55:45 +00:00
Remove memory allocations in some hot paths
This commit is contained in:
parent
e3122c5b46
commit
5da70f7197
84 changed files with 501 additions and 458 deletions
|
@ -13,7 +13,7 @@
|
|||
|
||||
namespace VideoCommon {
|
||||
|
||||
std::vector<Shader::TransformFeedbackVarying> MakeTransformFeedbackVaryings(
|
||||
std::pair<std::array<Shader::TransformFeedbackVarying, 256>, u32> MakeTransformFeedbackVaryings(
|
||||
const TransformFeedbackState& state) {
|
||||
static constexpr std::array VECTORS{
|
||||
28U, // gl_Position
|
||||
|
@ -62,7 +62,8 @@ std::vector<Shader::TransformFeedbackVarying> MakeTransformFeedbackVaryings(
|
|||
216U, // gl_TexCoord[6]
|
||||
220U, // gl_TexCoord[7]
|
||||
};
|
||||
std::vector<Shader::TransformFeedbackVarying> xfb(256);
|
||||
std::array<Shader::TransformFeedbackVarying, 256> xfb{};
|
||||
u32 count{0};
|
||||
for (size_t buffer = 0; buffer < state.layouts.size(); ++buffer) {
|
||||
const auto& locations = state.varyings[buffer];
|
||||
const auto& layout = state.layouts[buffer];
|
||||
|
@ -103,11 +104,12 @@ std::vector<Shader::TransformFeedbackVarying> MakeTransformFeedbackVaryings(
|
|||
}
|
||||
}
|
||||
xfb[attribute] = varying;
|
||||
count = std::max(count, attribute);
|
||||
highest = std::max(highest, (base_offset + varying.components) * 4);
|
||||
}
|
||||
UNIMPLEMENTED_IF(highest != layout.stride);
|
||||
}
|
||||
return xfb;
|
||||
return {xfb, count + 1};
|
||||
}
|
||||
|
||||
} // namespace VideoCommon
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue