mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-10 14:58:11 -05:00
Remove memory allocations in some hot paths
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user