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
|
@ -479,7 +479,7 @@ void EmitContext::DefineGenericOutput(size_t index, u32 invocations) {
|
|||
const u32 remainder{4 - element};
|
||||
const TransformFeedbackVarying* xfb_varying{};
|
||||
const size_t xfb_varying_index{base_index + element};
|
||||
if (xfb_varying_index < runtime_info.xfb_varyings.size()) {
|
||||
if (xfb_varying_index < runtime_info.xfb_count) {
|
||||
xfb_varying = &runtime_info.xfb_varyings[xfb_varying_index];
|
||||
xfb_varying = xfb_varying->components > 0 ? xfb_varying : nullptr;
|
||||
}
|
||||
|
|
|
@ -387,7 +387,7 @@ void SetupSignedNanCapabilities(const Profile& profile, const IR::Program& progr
|
|||
}
|
||||
|
||||
void SetupTransformFeedbackCapabilities(EmitContext& ctx, Id main_func) {
|
||||
if (ctx.runtime_info.xfb_varyings.empty()) {
|
||||
if (ctx.runtime_info.xfb_count == 0) {
|
||||
return;
|
||||
}
|
||||
ctx.AddCapability(spv::Capability::TransformFeedback);
|
||||
|
|
|
@ -160,7 +160,7 @@ void DefineGenericOutput(EmitContext& ctx, size_t index, std::optional<u32> invo
|
|||
const u32 remainder{4 - element};
|
||||
const TransformFeedbackVarying* xfb_varying{};
|
||||
const size_t xfb_varying_index{base_attr_index + element};
|
||||
if (xfb_varying_index < ctx.runtime_info.xfb_varyings.size()) {
|
||||
if (xfb_varying_index < ctx.runtime_info.xfb_count) {
|
||||
xfb_varying = &ctx.runtime_info.xfb_varyings[xfb_varying_index];
|
||||
xfb_varying = xfb_varying->components > 0 ? xfb_varying : nullptr;
|
||||
}
|
||||
|
|
|
@ -84,7 +84,8 @@ struct RuntimeInfo {
|
|||
bool glasm_use_storage_buffers{};
|
||||
|
||||
/// Transform feedback state for each varying
|
||||
std::vector<TransformFeedbackVarying> xfb_varyings;
|
||||
std::array<TransformFeedbackVarying, 256> xfb_varyings{};
|
||||
u32 xfb_count{0};
|
||||
};
|
||||
|
||||
} // namespace Shader
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue